转换R中的数据帧

时间:2018-03-23 16:19:44

标签: r dataframe transformation

我在R中有一个数据框,其中包含客户信息和每个产品的销售额。产品是具有多个值的字段。销售是一个单独的领域。我想转换表,以便每个产品的销售都有自己的列,这样我每个客户一行(而不是每个客户每个产品一行)。我已经看到了有关如何转置表的信息,但这是不同的。以下是我开始使用的两个简化示例以及所需的最终结果。真实情况将有更多的列,客户和产品。

起点:

start <- data.frame(client = c(1,1,1,2,2,2), 
product=c("Product1","Product2","Product3","Product1","Product2","Product3"),
          sales = c(100,500,300,200,400,600))

输出:

  client  product sales
1      1 Product1   100
2      1 Product2   500
3      1 Product3   300
4      2 Product1   200
5      2 Product2   400
6      2 Product3   600

以下是期望的最终结果:

end <- data.frame(client = c(1,2),
                      Product1 = c(100,200), Product2 = c(500,400),
                      Product3 = c(300,600))

输出:

  client Product1 Product2 Product3
1      1      100      500      300
2      2      200      400      600

如何在R中从头到尾转换这些数据?提前感谢您的任何帮助!

1 个答案:

答案 0 :(得分:1)

> install.packages("reshape2") # to install 'reshape2'.
> library(reshape2)
> dcast(start, client ~ product)
Using sales as value column: use value.var to override.
  client Product1 Product2 Product3
1      1      100      500      300
2      2      200      400      600