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
提前致谢。
答案 0 :(得分:0)
感谢“mtoto”
我忘了在函数中添加fun.aggregate = sum。
代码变为
sparse_matrix1 <- reshape2::dcast(df, df$id~df$brand, fun.aggregate = sum )