重塑数据从长到宽

时间:2016-07-18 10:26:36

标签: r long-integer reshape

df <-data.frame(id=c(1L,1L,2L,3L,2L,3L,4L),brand=c('a','a','b','c','d','a','b'),quantity=c(
2L,1L,5L,10L,11L,1L,2L),stringsAsFactors=F);

  id brand quantity
1  1     a        2
2  1     a        1
3  2     b        5
4  3     c       10
5  2     d       11
6  3     a        1
7  4     b        2

这是数据框

如果我使用以下命令

sparse_matrix1 <- reshape2::dcast(df, df$id~df$brand )

我得到以下输出

  df$id a b c d
1     1 2 0 0 0
2     2 0 1 0 1
3     3 1 0 1 0
4     4 0 1 0 0

结果只是第一个条目,但它没有给出前两个条目的总和。

有没有这样的方式,我得到答案为3(即第一和第二项的数量的2 + 1总和)品牌= 3和id = 1.

输出应为

  df$id a b c d
1     1 3 0 0 0
2     2 0 1 0 1
3     3 1 0 1 0
4     4 0 1 0 0

提前致谢。

1 个答案:

答案 0 :(得分:0)

感谢“mtoto”

我忘了在函数中添加fun.aggregate = sum。

代码变为

sparse_matrix1 <- reshape2::dcast(df, df$id~df$brand, fun.aggregate = sum )