我希望计算结果变量的简单均值,但仅针对与另一个运行变量的最大实例相关联的结果,按因子分组。
当然,计算出的统计量可以替代任何其他函数,并且组内的评估可以是任何其他函数。
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: ...
答案 0 :(得分:4)
你可以这样做:
dt[, .(meantarget = mean(target[filter == max(filter)])), by = name]
# name meantarget
# 1: A 2
# 2: B 2
# 3: C 2
# 4: D 2
# 5: E 2
# 6: F 2
# 7: G 2