我有两个数据集,一个是详细的数据集,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
Run Code Online (Sandbox Code Playgroud)
这是我想要的输出.
cola groupa weighta
1: a 1 85
2: b 2 55
Run Code Online (Sandbox Code Playgroud)
我试图做的是,
mytesta[mytestb, on = "groupa", weight_summary := sum(i.weighta), by = "groupa"]
Run Code Online (Sandbox Code Playgroud)
问题是当by使用时,内部data.table的列消失(例如mytesta[mytestb, on = "groupa", .SD, by = "groupa"]).有没有解决的办法?
我会做
mytesta[, v := mytestb[.SD, on=.(groupa), sum(weighta), by=.EACHI]$V1 ]
Run Code Online (Sandbox Code Playgroud)
在X[Y]连接中,我们查找Yin的每一行X。
因此,如果最终目标是在每行计算中创建一个新列Y,我们将需要一个联接,Y[, v := X[Y, ...]]即使Y[X, v := ...]一开始看起来更直观。