我搜索了很多Q& As但尚未找到解决此问题的解决方案......(请参阅下面的尝试)
我有一个交易数据集MAC_trans_sales_members
,其中每个交易都分配给一个客户ID,每个客户分配给一个同类群组,例如' 01/2016'在join.cohort
列中。有4M客户,因此1个excel文件的行数太多,因此我想为每个连接组创建单独的子集,并将每个子集导出到单独的csv。大约有18个同类群组,所以我想自动化这个子集。
我已尝试过以下几段代码,但它们都不起作用:
尝试1
dt <- MAC_trans_sales_members
setDT(dt)[, fwrite(.SD, paste0("output_", join.cohort,".csv")),
by = join.cohort, .SDcols=names(dt) ]
Error: is.character(file) && length(file) == 1 && !is.na(file) is not TRUE
尝试2
setDT(MAC_trans_sales_members)[, write.csv(.SD, paste0("output_", join.cohort,".csv")),
by = join.cohort, .SDcols=names(MAC_trans_sales_members) ]
Error in file(file, ifelse(append, "a", "w")) :
invalid 'description' argument
In addition: Warning message:
In if (file == "") file <- stdout() else if (is.character(file)) { :
the condition has length > 1 and only the first element will be used
尝试3
daply(MAC_trans_sales_members, .(join.cohort), write.csv)
...只是在控制台中喷出数据行
我做错了什么?
答案 0 :(得分:1)
join.cohort
是代码中j
中的向量。使用unique
MAC_trans_sales_members[,
fwrite(.SD, paste0("output_", unique(join.cohort), ".csv")),
by=join.cohort]
对于您的尝试3,file
的{{1}}参数未传入。