分割数据帧并写入csv

时间:2018-06-20 17:04:02

标签: r csv dataframe split subset

我有一个数据框,例如:

df <- data.frame(var1 = rep(c('a', 'b', 'c'), 100),
             var2 = rep(c('x', 'w', 'y', 'z'), 75),
             var3 = rep(c('one', 'two'), each = 150),
             value = 1:300)

我想自动将其拆分为数据帧,并为每个唯一的变量组写入csv文件。这将给我3 * 4 * 2 = 24个单独的数据帧和生成的csv文件。我希望每个组合的标题都为“ var1_var2_var3.csv”(例如,“ a_x_one.csv”

我该如何自动化?

1 个答案:

答案 0 :(得分:1)

考虑by,将数据帧按一个或多个因子进行拆分,并将子集作为参数传递给函数:

by_df_list <- by(df, df[,c("var1", "var2", "var3")], function(sub){

  file_name <- paste(max(as.character(sub$var1)), 
                     max(as.character(sub$var2)),
                     max(as.character(sub$var3)), sep="_")

  write.csv(sub, paste0(file_name, ".csv"), row.names = FALSE)

  return(sub)
})