我面临着一个(我认为)非常棘手的问题,涉及到data.table
的聚合。
我有以下的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>)
我想在基于第二列
id2
的数据上创建条件聚合,聚合的方式是仅包括具有给定 id2
元素中至少一个元素的 id1
组。我将通过一个示例来说明我的意思。对于
x
的条件聚合(第一行第二列),应包括 val
值 2、1、2,以及来自 id1 = b
的 val
值 1、3,因为它们存在 id2=x
,但没有来自 id1=c
的值,结果为 2 + 1 + 2 + 1 + 3 = 9。我希望将这个 9 作为第四列出现在每一行中,其中 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中是否可能?或者其他的包/方法呢? 谢谢。