基于转置创建多个CSV文件 [英] Create multiple csv files based on transpose
本文介绍了基于转置创建多个CSV文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个数据帧,如下所示:
CustID item sales
1 a1 40
1 a2 40
1 a3 34
1 a4 42
1 a5 21
1 a6 22
2 a1 33
2 a2 30
2 a3 21
2 a4 11
2 a5 19
2 a6 20
我需要创建2个转置的数据集(它们应该是CSV),以便每个数据集都包含3个一组的项目...
输出:
csv1 (item 1-3)
CustID itema1 itema2 itema3
1 40 40 34
2 33 30 21
csv2 (item 4-6)
CustID itema4 itema5 itema6
1 42 21 22
2 11 19 20
请帮帮我
推荐答案
不是一行解决方案,但它可以执行您想要的操作。
首先使用split
和dcast
可以创建并转置DF。
> items <- split(df, df$item)
>
> library(reshape2)
> dcast(do.call(rbind, items[1:3]), CustID~item )
CustID a1 a2 a3
1 1 40 40 34
2 2 33 30 21
> dcast(do.call(rbind, items[4:6]), CustID~item )
CustID a4 a5 a6
1 1 42 21 22
2 2 11 19 20
然后使用write.csv
可以创建数据帧并将其保存到CSV文件中。
以下是一次拍摄的全部内容:
lapply(seq(1, length(items), 3), function(i){
DF <- dcast(do.call(rbind, items[i:(i+2)]), CustID~item )
write.csv(DF, file = paste0("DF", i, ".csv"))
})
这篇关于基于转置创建多个CSV文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文