반응형
일을 하다보면 파일 안에 있는 변수는 같은데 파일 이름은 다르지만, 이를 하나로 통합하고 싶은 경우가 있을 겁니다. 예를 들어 파일 이름이 data2000, data2001,... data2020 이렇게 있는데 이를 다 합쳐서 하나로 만들 경우가 있을 수 있죠. 이를 한 번에 불러서 하나의 정돈된 데이터프레임으로 바꿀 수 없을까요? 우선 일단 특정 폴더를 만들어서 관련 csv 파일을 다 몰아 넣는 것이 첫번째 스텝입니다. 이후에 워킹 폴더를 그 폴더로 지정해주시구요 (setwd()). 아래가 가장 흔하게 쓰는 방법입니다.
setwd("/Users/abc/Downloads") #이것은 한 예입니다. 폴더에 맞춰 변경해주시면 됩니다.
files = list.files(pattern="*.csv") #csv파일을 일괄적으로 불러서 리스트 형태로 통합합니다.
myfiles=do.call(rbind, lapply(files, function(x) read.csv(x, stringsAsFactors = FALSE)))
그러나 최근 dplyr의 등장으로 do.call 명령어 없이 아래처럼 더 직관적으로 할 수 있습니다. 밑의 명령문의 뜻은 files list를 일괄적으로 읽은 다음 (read_csv) 열끼리 통합시키라는 뜻입니다 (bind_rows()).
files = list.files(pattern="*.csv")
myfiles=lapply(files, read_csv) %>% bind_rows()
검색해보니 read.csv가 느린 경우가 있어서 data.table library에 있는 fread() 함수를 쓰기도 하네요.
library(data.table)
myfiles = do.call(rbind, lapply(files, fread))
반응형
'R > R basic' 카테고리의 다른 글
R graph 결과를 pdf, jpeg 등으로 바로 export하려면? (0) | 2020.05.19 |
---|---|
많은 칼럼 속성을 변환 시켜줄 경우: 칼럼 번호가 중요한 이유 (0) | 2020.05.16 |
내가 갖고 있는 데이터의 형태는 데이터프레임인가? (0) | 2020.05.07 |
특정 열(column)만 선택 (keep) 혹은 제거(drop)하기 (0) | 2020.05.04 |
열(column) 새롭게 추가하기 (0) | 2020.05.03 |