我有一个数据框,我想根据变量的值保存为不同的.csv文件。
遵循数据框中的一些示例行和列:
PPT INDEX
ppt01 12
ppt01 13
ppt01 16
ppt01 16
ppt01 17
ppt01 18
ppt01 18
ppt01 19
ppt01 19
ppt01 23
ppt01 24
ppt01 24
ppt01 26
ppt01 27
ppt02 12
ppt02 13
ppt02 16
ppt02 16
ppt02 17
ppt02 27
ppt02 28
ppt02 29
ppt02 30
ppt02 30
ppt02 31
ppt03 12
ppt03 13
ppt03 16
ppt03 16
ppt03 17
ppt03 31
ppt03 32
ppt03 32
ppt03 33
我想基于 PPT 列将数据框保存到不同的文件中。例如:“newfile_ppt01.csv”
PPT INDEX
ppt01 12
ppt01 13
ppt01 16
ppt01 16
ppt01 17
ppt01 18
ppt01 18
ppt01 19
ppt01 19
ppt01 23
ppt01 24
ppt01 24
ppt01 26
ppt01 27
“newfile_ppt02.csv”
PPT INDEX
ppt02 12
ppt02 13
ppt02 16
ppt02 16
ppt02 17
ppt02 27
ppt02 28
ppt02 29
ppt02 30
ppt02 30
ppt02 31
依旧......
答案 0 :(得分:0)
您可以遍历所有唯一的ppt并保存每一个:
for (ppt in unique(data$PPT)) {
write.csv(data["PPT" == ppt,], file = paste0("newfile_", ppt, ".csv"))
}
答案 1 :(得分:0)
在R中,您应该始终避免for
循环。始终建议使用apply
系列中的函数。
假设您的数据采用以下格式:
df <- data.frame(
PPT=c("ppt01", "ppt01", "ppt01", "ppt02", "ppt02", "ppt03", "ppt03", "ppt03"),
INDEX=c(1,2,3,4,5,6,7,8)
)
将factor
转换为character
:
df$PPT <- as.character(df$PPT)
现在,您根据PPT
列上的值分割数据:
df_list <- split(df, df$PPT)
使用lapply
,您可以保存每个拆分数据:
lapply(seq_along(df_list), function(i){
write.csv(df_list[[i]], paste0(df_list[[i]][1,1], ".csv"), row.names = FALSE)
})