R中的条件运行平均值?

时间:2018-06-07 15:13:09

标签: r

使用" caTools"计算运行平均值很容易。但我只想在窗口中至少有3个值,否则返回NA

    library("caTools") 
    x=c(56,NA,4,6,2,1,NA,NA,NA,5,2,5,6,4,7,5,2,NA) 
    runmean(x,5)

2 个答案:

答案 0 :(得分:4)

在这里,我定义了一个计算非NA元素的函数,如果它少于三个,则返回NA。但是,如果它大于或等于3则返回平均值。

foo <- function(x)ifelse(sum(!is.na(x)) < 3, NA, mean(x, na.rm = TRUE))

接下来,我使用rollapply包中的zoo来应用该功能,

rollapply(x, width = 5, FUN = foo)

给出以下结果:

#[1] 17.00  3.25  3.25  3.00    NA    NA    NA  4.00  4.50  4.40  4.80  5.40  4.80  4.50

答案 1 :(得分:1)

这样的东西......?

> library(zoo)
> rollapply(x, 3, mean)
 [1]       NA       NA 4.000000 3.000000       NA       NA       NA       NA       NA 4.000000 4.333333 5.000000 5.666667
[14] 5.333333 4.666667       NA