我面对(我认为)是data.table
一个艰难的问题汇总我下面data.table
[R data.table条件聚集
structure(list(id1 = c("a", "a", "a", "b", "b", "c", "c"), id2 = c("x",
"y", "z", "x", "u", "y", "z"), val = c(2, 1, 2, 1, 3, 4, 3)), .Names = c("id1",
"id2", "val"), row.names = c(NA, -7L), class = c("data.table",
"data.frame"), .internal.selfref = <pointer: 0x1f66a78>)
我想创建条件骨料val
列基于第二列id2
。聚合完成的方式是只包含id1
组,其中至少有一个元素来自给定的元素。我将通过一个例子来展示我的意思。
有条件骨料x
(第一行第二列)将包括id1 = a
val
值2,1,2和val
值= 1,3从id1 = b
因为id2=x
存在他们,但没有从值id1=c
,导致2 + 1 + 2 + 1 + 3 = 9的值。我想把9作为第012列中的第4列,其中id2 = x
出现。
同样,我想为所有id2
值做这个。所以最终的输出将是
id1 id2 val c.sum
1: a x 2 9
2: a y 1 12
3: a z 2 12
4: b x 1 9
5: b u 3 4
6: c y 4 12
7: c z 3 14
这是可能的R,data.table?或者任何其他包装/方法? 在此先感谢
我感到困惑与期望的结果。如果id2包含z,则在c.cum中可能会出现12。我错过了什么吗? – jazzurro
错字,我的意思是12. – broccoli
这很好。现在你得到了答案。 :) – jazzurro