我有两个数据集,一个是weight
的详细数据集,另一个是摘要数据集。我正在尝试通过加入明细数据集并进行汇总来创建摘要数据集,但是它没有按预期工作。
这是示例代码。
mytesta <- data.table(cola = c("a","b"), groupa = c(1,2)) # summary
mytestb <- data.table(groupa = c(1,1,1,1,2,2,2), weighta = c(10,20,30,25,15,30,10)) #detail
这是我想要的输出。
cola groupa weighta
1: a 1 85
2: b 2 55
我想做的是
mytesta[mytestb, on = "groupa", weight_summary := sum(i.weighta), by = "groupa"]
问题在于,当使用
by
时,内部data.table的列会消失(例如,mytesta[mytestb, on = "groupa", .SD, by = "groupa"]
)。有没有解决的办法? 最佳答案
我会做
mytesta[, v := mytestb[.SD, on=.(groupa), sum(weighta), by=.EACHI]$V1 ]
在
X[Y]
联接中,我们在Y
中查找X
的每一行。因此,如果最终目标是在每行计算的
Y
中创建一个新列,那么即使一开始Y[, v := X[Y, ...]]
似乎更直观,我们仍需要连接Y[X, v := ...]
。