我有一个数据框,例如:
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”
我该如何自动化?
答案 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)
})