해보記/R

<記> R Data Input/Output - 파일에서 데이터 가져오기

Light Pillar 2019. 11. 28. 17:37

R, RStudio를 이용해 데이터를 분석하기 위해서는 먼저 데이터를 R로 가져와야 한다.

.csv 형태의 정형 데이터를 읽어서 R의 오브젝트에 입력하거나, 오브젝트의 내용을 .csv 파일로 내보내거나, DB에서 데이터를 읽어 오거나 또는 DB로 데이터를 저장하는 등의 데이터 I/O에 대해서 살펴보자.


데이터 Import

파일에서 데이터를 가져오는 방법은 다양하다. CSV(Comma-Separated Values)는 확장자의 뜻 그대로, 여러가지 필드를 컴마(쉼표 ,)로 구분해 놓은 정형화된 텍스트 데이터 파일이다.

 

예제 파일은 앞서 산점도에서 사용했던 데이터('hfda_ch09_employees_kr.csv')에서 20건의 데이터만 가져다 새로 생성한 'C:\\R_WD\\io_test.csv' 파일을 사용하려 한다. - 테스트니까~~ ^^

 

io_test.csv 내용

데이터를 Import하는 함수 중 read.csv, read.table, fread, read.csv.sql 함수에 대해서 살펴보고자 한다.

여기서는 파일에서 데이터를 가져오는 함수가 이러한 것들이 있다 정도만 살펴보고, 추후에 각 함수를 사용하는 테스트를 수행할때 상세한 설명을 진행하고자 한다.

 

 

read.csv

# read.csv()로 csv 파일에서 데이터 가져오기
# io_test.csv 파일을 읽어 DF1 오브젝트에 데이터를 저장한다.
> DF1 <- read.csv("C:\\R_WD\\io_test.csv", stringsAsFactors=FALSE)

 

read.table()

# read.table()로 csv 파일에서 데이터 가져오기
# io_test.csv 파일을 읽어 DF2 오브젝트에 데이터를 저장한다.
> DF2 <- read.table("C:\\R_WD\\io_test.csv", header=TRUE, sep=",", quote="", stringsAsFactors=FALSE, comment.char="", colClasses=c("integer", "numeric", "logical", "character", "integer")))

 

fread()

fread()는 data.table package에서 제공하는 함수이다. data.table 패키지를 로드하지 않은 상태에서 실행하면 에러 메시지를 맞닥드리게 될것이다.

에러 메시지

먼저 data.table 패키지를 R에 로드해야 한다. (패키지를 설치하고 로드하는 방법은 이전 글을 참고하길...)

data.table 패키지의 상세 내용 및 함수들은 차후에 사용 하면서 자세히 다뤄보기로 하자.

# fread()로 csv 파일에서 데이터 가져오기
# io_test.csv 파일을 읽어 DT1 오브젝트에 데이터를 저장한다.
> DT1 <- fread("C:\\R_WD\\io_test.csv")

 

read.csv.sql()

먼저 sqldf 패키지를 설치하고, R에 로드한다. sqldf는 통계 처리와 관련된 유용한 함수들이 탑재되어있는 패키지다.

# read.csv.sql()로 csv 파일에서 데이터 가져오기
# io_test.csv 파일을 읽어 SQLDF 오브젝트에 데이터를 저장한다.
> system.time(SQLDF <- read.csv.sql("C:\\R_WD\\io_test.csv", dbname=NULL))

각각의 함수는 결과에 대하여 그다지 차이가 있지는 않다. 이번에 사용한 예제 데이터는 레코드 수가 너무 작아 비교할 수가 없지만, 실제 데이터 분석을 위한 데이터 레코드는 몇 십만, 몇 백만 레코드가 될 수도 있다. 그런 경우 데이터를 읽어들이는 것 만으로도 시스템에 로드가 걸리는걸 볼 수 있다.

 

system.time() 함수를 사용하면 R이 명령을 수행하는데 걸리는 시간을 확인할 수 있다. system.time()을 통하여 많은 량의 데이터를 읽고 쓰는 경우 어떤 함수가 더 빠른 속도로 처리되는지 비교할 수 있다. 나중에 비교 가능한 량의 데이터를 가져와야 하는 경우 다시 확인해 보기로 하자.

# system.time()으로 스크립트 실행 시간을 확인할 수 있다.
> system.time(DT1 <- fread("C:\\R_WD\\io_test.csv"))

 

'해보記 > R' 카테고리의 다른 글

<記> R Vector  (0) 2019.12.02
<記> R Data Input/Output - 파일에 데이터 저장하기  (0) 2019.11.29
<記> R 데이터 유형과 데이터 구조  (0) 2019.11.20
<記> R 변수와 벡터  (1) 2019.11.19
<記> R 패키지 설치 - RStudio 에서  (0) 2019.11.18