使用" 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)
答案 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