Basic Objects - Dataframe

Page content

공지

본 Tutorial은 강사에게 강의를 듣는 과거-현재-미래 학생들을 위해 작성하였습니다.

이 글을 읽어주시는 분들에게 작은 도움이 되기를 바랍니다.

I. DataFrame의 개요

본 포스트는 프로그래밍과 R을 처음 배우는 사람을 위해 작성하였습니다. 짧게 읽어두시기를 바랍니다. 공부하실 때는 복잡하게 생각하지는 마시기를 바랍니다. 영어의 기본단어 및 문법을 배우듯이 그냥 받아들이시기를 바랍니다.

데이터프레임은 서로 다른 성질의 벡터가 모여 있는 집합이라고 할 수 있다.1

(1) 데이터프레임 생성

이제 데이터프레임을 만들어보자. 어려운 것은 아니니 쉽게 따라 올 수 있을 것이다.

  • 우선 아래와 순서로 코드 작성하면 된다.
    • vector 생성
    • data.frame() 생성
이름 <- c("홍길동", "심청이", "김길동", "성춘향")
나이 <- c(30, 20, 34, 50)
지각 <- c(TRUE, FALSE, FALSE, FALSE)

data.frame(이름 = 이름, 
           나이 = 나이, 
           지각 = 지각)
##     이름 나이  지각
## 1 홍길동   30  TRUE
## 2 심청이   20 FALSE
## 3 김길동   34 FALSE
## 4 성춘향   50 FALSE

(2) stringsAsFactors = FALSE

  • 이 기능은 2006년에data.frame() & read.table() 함수에 처음 적용이 되었다.

  • R.4.0.0 버전이 2020년 4월 24일 배포된 이후에, stringsAsFactors = FALSE의 기능은 사라지게 되었다.

  • 이 기능이 하는 주요 역할은 string 데이터를 factor로 자동 변환을 해주는 기능이 있었는데, 자동 변환 해주는 것이 사라졌다.

II. 데이터 내보내기

  • 이제 데이터를 내보내기를 하겠다. 만들어진 데이터를 내보내는 방법은 크게 3가지가 있다.
  • 또한 이 영역은 주로 File IO와 연관이 있는데, 결국 실무에서는 Database 연결이 되며, 이 부분은 사실 매우 중요하면서 큰 영역이기에 추후에 따로 기술하도록 한다.
  • 이번 포스트에서 간단하게 csv파일, 엑셀파일로 내보내기를 수행한다. '

방법 1. csv

  • csv으로 내보내기 할 때는 대표적으로 write.csv() 함수를 사용한다.
  • 우선, 데이터프레임 객체를 만든 후, csv 파일에 저장한다.
temp <- data.frame(이름 = 이름, 
           나이 = 나이, 
           지각 = 지각)
write.csv(x = temp, file = "data/temp.csv")
  • 우선 temp라는 데이터 객체를 만든다.
  • write.csv() 함수를 활용하는데, x는 데이터의 객체를 의미하고, file은 저장할 파일의 경로를 의미한다.
  • 이 때, 확장자명을 .csv 꼭 명시해주셔야 합니다.

방법 2. 엑셀

  • 이제 엑셀로 내보내기를 수행한다.
# install.packages("writexl")
writexl::write_xlsx(x = temp, path = "data/temp.xlsx")
  • 엑셀로 내보내는 것은 별도의 패키지를 설치해야 한다.
  • install.packages("writexl")을 실행해서 패키지를 설치합니다.
  • write_xlsx() 함수 안에 있는, 인수는 write.csv() 함수와 동일하다.

III. 파일 불러오기

  • 이제 파일을 불러온다. 파일을 불러올 때는 read 계열로 호출하면 된다.
temp <- read.csv("data/temp.csv")
temp2 <- readxl::read_xlsx("data/temp.xlsx", sheet = 1)
  • csv 파일을 불러올 때는 read.csv() 함수를 사용한다.
  • .xlsx 파일을 불러올 때는 readxl 패키지 안에 있는 read_xlsx() 함수를 사용한다.

VI. 자주하는 실수 핸들링

  • 그러나, 입문자들에게 위 함수를 바로 써서 성공하는 경우는 거의 없다.
  • 아래 에러문구를 확인한다.
temp2 <- readxl::read_xlsx("data/temp.xlsx", sheet = 1)
Error: `path` does not exist: ‘data/temp.xlsx’
  • 위 에러가 의미하는 것은 무엇일까? 경로 에러입니다.
  • 경로는 어떻게 수정해야 할까요?
  • getwd()를 실행하여 먼저 현재 경로를 확인한다.
> getwd()
[1]"/your/current/directory"
  • setwd() 함수안에 경로를 지정한다.
> setwd('/my/new/directory')
[1]"/my/new/directory"

경로 에러시 위와 같이 경로를 재지정하면 파일을 불러올 수 있다.

V. Reference

Chapman, C., & Feit, E. M. D. (2015). R for marketing research and analytics. Cham: Springer.


  1. 벡터에 관한 설명이 필요하다면, Basic Objects - Vector에서 확인하기를 바란다. ↩︎