基于转置创建多个CSV文件 [英] Create multiple csv files based on transpose

查看:0
本文介绍了基于转置创建多个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

请帮帮我

推荐答案

不是一行解决方案,但它可以执行您想要的操作。

首先使用splitdcast可以创建并转置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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆