4.3 readr 패키지

  • 기본적으로 4.1.1 절에서 학습했던 read.table(), read.csv()와 거의 동일하게 작동하지만, 읽고 저장하는 속도가 base R에서 제공하는 기본 입출력 함수보다 월등히 뛰어남. 최근 readr 패키지에서 제공하는 입출력 함수보다 더 빠르게 데이터 입출력이 가능한 feather 패키지 (Wickham 2019a) 제공

  • 데이터를 읽는 동안 사소한 문제가 있는 경우 해당 부분에 경고 표시 및 행, 관측 정보를 표시해줌 \(\rightarrow\) 데이터 디버깅에 유용

  • 주요 함수8

    • read_table(), write_table()
    • read_csv(), write_csv()
  • readr vignette을 통해 더 자세한 예시를 살펴볼 수 있음

  • 예시
Parsed with column specification:
cols(
  pclass = col_double(),
  survived = col_double(),
  name = col_character(),
  sex = col_character(),
  age = col_double(),
  sibsp = col_double(),
  parch = col_double(),
  ticket = col_character(),
  fare = col_double(),
  cabin = col_character(),
  embarked = col_character(),
  boat = col_character(),
  body = col_double(),
  home.dest = col_character()
)
필요한 패키지를 로딩중입니다: feather
 사용자  시스템 elapsed 
  20.19    0.00   20.19 
 사용자  시스템 elapsed 
   0.08    0.00    0.08 
Parsed with column specification:
cols(
  .default = col_double()
)
See spec(...) for full column specifications.
 사용자  시스템 elapsed 
  15.86    0.11   15.99 
 사용자  시스템 elapsed 
   0.20    0.02    0.21 

4.3.1 Excel 파일 입출력

  • R에서 기본적으로 제공하는 파일 입출력 함수는 대부분 텍스트 파일(*.txt, *.csv, *.tsv9)을 대상으로 하고 있음
  • readr 패키지에서도 이러한 원칙은 유지됨
  • Excel 파일을 R로 읽어오기(과거 방법)
    • *.xls 또는 *.xlsx 파일을 엑셀로 읽은 후 해당 데이터를 위 텍스트 파일 형태로 내보낸 후 해당 파일을 R로 읽어옴
    • xlsx 패키지 등을 이용해 엑셀 파일을 직접 읽어올 수 있으나, Java 기반으로 개발된 패키지이기 때문에 Java Runtime Environment를 운영체제에 설치해야만 작동
  • 최근 tidyverse 중 하나인 readxl 패키지를 이용해 간편하게 R 작업환경에 엑셀 파일을 읽어오는 것이 가능(Hadley Wickham이 개발…)
    • tidyverse의 한 부분임에도 불구하고 tidyverse 패키지 번들에는 포함되어 있지 않기 때문에 별도 설치 필요

readxl 패키지 구성 주요 함수

  • read_xls(), read_xlsx(), read_excel: 엑셀 파일을 읽어오는 함수로 각각 Excel 97 ~ 2003, Excel 2007 이상, 또는 버전 상관 없이 저장된 엑셀 파일에 접근함
  • excel_sheets(): 엑셀 파일 내 시트 이름 추출 \(\rightarrow\) 한 엑셀 파일의 복수 시트에 데이터가 저장되어 있는 경우 활용
  • 예시: 2020년 4월 23일 COVID-19 유병률 데이터 (Our World in Data)
필요한 패키지를 로딩중입니다: readxl

4.3.2 tibble 패키지

  • readr 또는 readxl 패키지에서 제공하는 함수를 이용해 외부 데이터를 읽어온 후, 확인할 때 기존 데이터 프레임과 미묘한 차이점이 있다는 것을 확인
  • 프린트된 데이터의 맨 윗 부분을 보면 A tibble: 데이터 차원 이 표시된 부분을 볼 수 있음
  • tibble은 tidyverse 생태계에서 사용되는 데이터 프레임 \(\rightarrow\) 데이터 프레임을 조금 더 빠르고 사용하기 쉽게 수정한 버전의 데이터 프레임

tibble 생성하기

  • 기본 R 함수에서 제공하는 as.* 계열 함수 처럼 as_tibble() 함수를 통해 기존 일반적인 형태의 데이터 프레임을 tibble 로 변환 가능
  • 개별 벡터로부터 tibble 생성 가능
  • 방금 생성한 변수 참조 가능
  • 문자형 변수가 입력된 경우 데이터 프레임과 다르게 별다른 옵션이 없어도 강제로 factor로 형 변환을 하지 않음
Error in data.frame(x = letters, y = rnorm(26), z = y^2): 객체 'y'를 찾을 수 없습니다
  • tribble() 함수 사용: transposed (전치된) tibble의 약어로 데이터를 직접 입력 시 유용

tibble()data.frame()의 차이점

  • 가장 큰 차이점은 데이터 처리의 속도 및 데이터의 프린팅
  • tibble이 데이터 프레임 보다 간결하고 많은 정보 확인 가능
  • str()에서 확인할 수 있는 데이터 유형 확인 가능

References

Wickham, Hadley. 2019a. Feather: R Bindings to the Feather ’Api’. https://CRAN.R-project.org/package=feather.


  1. 주요 함수들의 사용방법은 거의 유사하기 때문에 read_csv() 함수에 대해서만 살펴봄

  2. tab separated values