엑셀 파일 부를 때 쓰는 함수는 read_excel입니다. readxl library를 다운 받으셔야 해요. 엑셀 파일이 있는 곳으로 워킹 폴더 바꿔주시구요 setwd().
library(readxl)
setwd(...)
예를 들어 해당 폴더에 data.xlsx라는 엑셀 파일이 있다고 합시다. 그리고 여기에 sheet가 하나밖에 없다고 하면, 그냥
df<-read_excel("data.xlsx") 이렇게 하면 바로 읽힙니다. 만약 excel sheet가 3개 있는데 두 번째 sheet만 읽고 싶다고 하면
df<-read_excel("data.xlsx", sheet=2)
sheet이름으로 부르고 싶다. sheet 이름이 2016이다고 하면 2016은 숫자가 아니라 문자니까 따옴표를 적어주시고
df<-read_excel("data.xlsx", sheet="2016")
만약에 엑셀 파일에 있는 모든 sheet를 한꺼번에 열고 싶다고 하면, 일단 각 엑셀 sheet를 데이터프레임으로 열어서 이걸 리스트에 넣는 식으로 해야 합니다. 이 때는 일괄적으로 모든 함수를 적용시키는 lapply라는 함수를 쓰면 되는데요. 우선 엑셀 파일에 있는 모든 sheet 이름을 갖고 리스트를 만든 다음에 이 리스트에 lapply를 적용시키면 됩니다.
sp.list <- excel_sheets("data.xlsx")
df <- lapply(sp.list, read_excel, path="data.xlsx")
만약에 이런 경우라면 어떨까요. 어떤엑셀 파일이 있는데 각 연도별 sheet가 있고 (2021, 2020, 2019... 이런 식으로 sheet 이름이 있음), 각 sheet에 있는 칼럼 내용은 동일해서 그냥 하나로 다 합쳐버리고 싶다 (2021년 sheet에 총매출액, 매출총이익, 순이익 3가지 항목이 있고, 2020년 sheet에도 같은 내용..).
그러면 저번에 말씀 드린 do.call로 묶어버리면 됩니다. 단 이 때는 칼럼 이름이 정확히 같아야 합니다. 그래야 rbind를 쓸 수 있어요.
sp.list <- excel_sheets("data.xlsx")
df <- lapply(sp.list, read_excel, path="data.xlsx")
master_file<-as.data.frame(do.call(rbind,df)) #df 리스트에 있는 거 다 합쳐라
'R > R basic' 카테고리의 다른 글
열(row) 제거하기 (0) | 2022.06.09 |
---|---|
데이터프레임을 엑셀파일로 변환? 그냥 csv파일로 바꾸자 (write.csv) (0) | 2022.01.12 |
string 문자열 알파벳 세기, 문자열 합치기, 일부 보이기 (str_length, str_c, str_sub) (0) | 2021.12.07 |
날짜 데이터 읽기 (2): 두 개 이상 날짜 칼럼 합쳐서 변환 (with, sprintf) (0) | 2021.05.25 |
날짜 데이터 읽기 (1): 문자를 날짜로 데이터 변환 (as.Date) (0) | 2021.05.23 |