我希望计算一个结果变量的简单平均值,但仅针对与另一个运行变量的最大实例相关联的结果,并按因素分组。
当然,可以将计算出的统计量替换为任何其他函数,并且组内评估可以是任何其他函数。
library(data.table) #1.9.5
dt <- data.table(name = rep(LETTERS[1:7], each = 3),
target = rep(c(0,1,2), 7),
filter = 1:21)
dt
## name target filter
## 1: A 0 1
## 2: A 1 2
## 3: A 2 3
## 4: B 0 4
## 5: B 1 5
## 6: B 2 6
## 7: C 0 7
使用此框架,期望的输出应该返回一个符合精确为2的目标平均值。
类似于:
dt[ , .(mFilter = which.max(filter),
target = target), by = name][ ,
mean(target), by = c("name", "mFilter")]
...似乎接近了,但还没完全达到。
解决方案应返回:
## name V1
## 1: A 2
## 2: B 2
## 3: ...