R에서 [반복문]을 활용하여 케이스 추출 후 개별 .csv 파일로 저장하기
- situation -
졸업율이 들어있는 파일에서 각각의 학교구 ID를 기준으로 파일을 추출하고(총48개의 학교구가 있음), 그 추출된 각각의 파일을 .csv 파일로 저장하되 특정 파일명이 포함되도록 저장했으면 좋겠다는 디렉터의 요청이 있었습니다.
- methods -
1. 각각의 학교구ID를 선택한 후 저장하기
패키지를 설치 한 후, filter 명령어를 활용하여 48개의 학교구별로 파일을 추출하고 이것을 다시 각각의 파일로 저장하는 방법입니다.
setwd("C:/Users/work/") #워킹디렉터리 설정하기
install.packages("dplyr") #dplyr 패키지 설치하기
install.packages("readr") #readr 패키지 설치하기
library(dplyr) #dplyr 패키지 불러오기
library(readr) #readr 패키지 불러오기
GradR <- read.csv("Graduation.csv", stringsAsFactors=FALSE) # 데이터를 불러오고 GradR이라 부르기로 함
SD001 <- GradR %>% filter(SDID == "SD001") #SD001 학교구를 선택한 후 SD001이라고 부르기로 함
write.csv(SD001, "SD001_GRADUATIONRATE.csv") #SD001 파일을 SD001_GRADUATIONRATE.csv로 저장
:
:
SD068 <- GradR %>% filter(SDID == "SD068")
write.csv(SD048, "SD048_GRADUATIONRATE.csv")
2. 반복문을 이용해서 실행하기
여기에서는 반복문을 활용하기 위해서 for 구문을 사용하였습니다.
x <- c("SD001", "SD002", "SD003", "SD004",...."SD048") #학교구 ID를 x라는 변수(벡터)에 할당하기
for( i in x){
readr :: write_csv(filter(GradR, SDID == i ), path = paste( i, '_GRADUATIONRATE.csv'))
}
또는
for( i in x){
readr :: write_csv(filter(GradR, SDID == i ), path = paste0( i, '_GRADUATIONRATE.csv'))
}
paste뒤에 0없으면 파일명이 저장될 때에 i _GRADUATIONRATE.csv로 저장이 되고 0이 있으면 i_GRADUATIONRATE.csv로 저장이 된다. 즉 i 다음에 한칸이 띄어지게 하느냐 마느냐의 차이이다.
이 명령어를 실행시키면 워킹디렉터리안에 SD001_GRADUATIONRATE.csv 파일부터 SD048_GRADUATIONRATE.csv 파일까지 저장되어 있는 것을 확인할 수 있습니다.