我有一个数据框架,我想根据变量的值将其保存为不同的.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等等..。
发布于 2017-05-17 16:56:13
您可以循环遍历所有唯一的ppt并保存其中的每一个:
for (ppt in unique(data$PPT)) {
write.csv(data["PPT" == ppt,], file = paste0("newfile_", ppt, ".csv"))
}发布于 2017-05-17 17:22:17
在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)
})https://stackoverflow.com/questions/44030688
复制相似问题