我想使用向量化条件平均值(当使用ddply
和transform
时)表示通过某个条件的条目的平均值。我想出了这个,但我想知道它是否可以使用内置函数或流行的包实现?
mean.conditional <- function(x, cond, zero = 0) {
filter <- cond(x)
return(sum(ifelse(filter, x, zero)) / sum(filter))
}
或者,以下功能可能更清晰:
mean.conditional <- function(x, filter) {
return(sum(ifelse(filter, x, 0)) / sum(filter))
答案 0 :(得分:5)
没有内置功能,但这样做:
sum(x*filter) / sum(filter)
答案 1 :(得分:2)
mean(x[cond(x)])
能做你想做的吗?