8.3 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)
read_xlsx(
  path, # Excel 폴더 및 파일 이름
  sheet = NULL, # 불러올 엑셀 시트 이름
                # default = 첫 번째 시트
  col_names = TRUE, # read_csv()의 인수와 동일한 형태 입력
  col_types = NULL  # read_csv()의 인수와 동일한 형태 입력
)

# 2020년 4월 21일자 COVID-19 국가별 유별률 및 사망률 집계 자료
# dataset/owid-covid-data.xlsx 파일 불러오기 
# install.packages("readxl")
require(readxl)
필요한 패키지를 로딩중입니다: readxl
covid19 <- read_xlsx("dataset/covid-19-dataset/owid-covid-data.xlsx")
covid19
# 여러 시트를 동시에 불러올 경우
# dataset/datR4CTDA.xlsx 의 모든 시트 불러오기
path <- "dataset/datR4CTDA.xlsx"
sheet_name <- excel_sheets(path)
dL <- lapply(sheet_name, function(x) read_xlsx(path, sheet = x))
names(dL) <- sheet_name


  1. tab separated values↩︎