R에서 csv 파일 factor 별로 분할 저장하기

데이터는 아래와 같을 경우,

CUSTOMER_ID CAMPAIGN_ID
<chr> <chr>
1 cno0001 00010
2 cno0002 00010
3 cno0003 00010
4 cno0004 00010
5 cno0005 00011
6 cno0006 00011
7 cno0007 00012
8 cno0008 00012
9 cno0009 00012

 

1. 데이터 Import

library(readr)
dt <- read_csv(“R/파일명.csv”)

 

2. 분할 기준이 될 컬럼을 factor 데이터형으로 변경

dt$CAMPAIGN_ID <- as.factor(dt$CAMPAIGN_ID)

levels(dt_test$CAMPAIGN_ID)
## 변경 결과 확인

 

3.  분할 및 csv 저장

by(dt, dt[,c(“CAMPAIGN_ID”)], function(sub) {
fn <- paste0(‘캠페인번호-‘, sub$CAMPAIGN_ID[1], ‘.csv’)

write.csv(sub, fn, row.names=FALSE)
})

 

cf. 특정 컬럼만 저장하고 싶다면 다음과 같이 실행
write.csv(sub[c(1)], fn, row.names=FALSE)
})

 

→ 결과

캠페인번호-00010.csv
캠페인번호-00011.csv
캠페인번호-00012.csv