이전 포스팅에서 폴더 안에 여러 csv파일을 불러들여서 합치는 코드를 작성해보았습니다.
https://bluediary8.tistory.com/85?category=787191
이번에는 난이도를 조금 높여서 여러 폴더안에서 특정 문자가 들어간 csv파일만 골라서 합치는 코드를 작성해 보도록 하겠습니다.
아래 화면고 같이 new폴더안에 1, 2, 3 폴더가 있다라고 가정을 하고
각 폴더안에는 다음과 같은 csv파일들이 있다고 가정을 해보죠
즉,
1폴더 - 6개의 csv
2폴더 - 6개의 csv
3폴더 - 6개의 csv
와 같은 구조로 이루어져있고
여기서 우리는 특정 글자가 들어간 csv파일만 불러서 합쳐보도록 하겠습니다.
우선 큰 골격만 짜보도록 하죠
최종적인 data가 들어갈 final 변수를 선언해주고
아래와 같이 1부터 3폴더 까지 working directory를 변경하고
working directory 안에서 csv파일들을 받아와야겠죠?
final <-NULL
for(j in 1:3){
setwd(paste0("D:\\R\\new\\",j)) ## Working directory setting
file_list<- list.files()
}
그리고 각 폴더안에서 csv파일을 받고 그안에서 원하는 파일만 받아와야합니다.
본 예제에서는 파일명에 "cc"가 들어간 파일만 받아오도록 하겠습니다.
str_detect를 이용해서 파일명에서 cc가 있는 index를 찾고
폴더 안 csv list에서 해당 index에 해당하는 csv만 받아 옵니다.
library(stringr)
final <-NULL
for(j in 1:3){
setwd(paste0("D:\\R\\new\\",j)) ## Working directory setting
file_list<- list.files()
file_index<-str_detect(file_list,"cc")
file_list[file_index]
}
이제 우리가 원하는 csv파일 list를 받았으니
for문안에 또 for문을 열어야합니다.
이러한 구조를 이중 for문이라고 이야기합니다.
두번째 for문안에서는 csv파일을 read.csv 해서 최종 데이터 frame인 final변수와 rbind 시켜주어야합니다.
library(stringr)
final <-NULL
for(j in 1:3){
setwd(paste0("D:\\R\\new\\",j)) ## Working directory setting
file_list<- list.files()
file_index<-str_detect(file_list,"cc")
csv_file<-file_list[file_index]
for(i in 1:length(csv_file)){
## csv파일 read
## final과 rbind
}
}
아래와 같이 코드를 완성해주시면 됩니다.!!
library(stringr)
final <-NULL
for(j in 1:3){
setwd(paste0("D:\\R\\new\\",j)) ## Working directory setting
file_list<- list.files()
file_index<-str_detect(file_list,"cc")
csv_file<-file_list[file_index]
for(i in 1:length(csv_file)){
data<-read.csv(csv_file[i]) ## csv파일 read
final<-rbind(final,data) ## final과 rbind
cat("\n",j,"-",i)
}
}
head(final)
dim(final)
코드를 돌리시면 아래 화면처럼 cat에 의해 진행 상황이 나오게 되죠
1번폴더부터 3번폴더까지 에러가나지 않고 잘 돌아간 것을 확인 할 수 있습니다.
head와 dim함수를 통해서도 데이터가 잘 합쳐진 것을 확인 할 수 있습니다.
'R프로그래밍' 카테고리의 다른 글
R프로그래밍 - tapply 함수 제대로 알기, 데이터 요소별 함수 적용하기 (0) | 2020.06.25 |
---|---|
R프로그래밍 - apply 함수 이해하기, 데이터 칼럼 별 합계/행별 합계 구하기 (0) | 2020.06.25 |
R프로그래밍 - 문자열 찾는 함수 str_detect 함수 %in%연산자 (0) | 2020.06.24 |
R프로그래밍 - R package 설치 법, 설치 오류시 해결 하는 방법 (수동 설치법, 패키지 제거법) (1) | 2020.06.24 |
R프로그래밍 - 폴더 안에 여러 csv파일들 하나로 불러 들이기 list.files 함수 (3) | 2020.06.24 |
댓글