我面對(我認爲)是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