按因子计算平均值[r]

时间:2015-04-16 16:57:11

标签: r data.table

我希望计算结果变量的简单均值,但仅针对与另一个运行变量的最大实例相关联的结果,按因子分组。

当然,计算出的统计量可以替代任何其他函数,并且组内的评估可以是任何其他函数。

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:  ...

1 个答案:

答案 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