我有一个关于将rollmean函数应用于中间有一个长NA的向量的问题。 这是一个例子。
> (z <- c(sample (x=1:10, size=5), rep (x=NA, times=5), sample (x=1:10, size=5)))
[1] 1 7 8 3 5 NA NA NA NA NA 3 5 10 8 4
> rollmean (x=zoo (z, 1:length(z)), k=3)
2 3 4 5 6 7 8 9 10 11 12 13 14
5.333333 6.000000 5.333333 NA NA NA NA NA NA NA NA NA NA
> rev (rollmean (x=zoo (rev (z), 1:length (z)), k=3))
2 3 4 5 6 7 8 9 10 11 12 13 14
NA NA NA NA NA NA NA NA NA NA 6.000000 7.666667 7.333333
所以我怎么能得到像这样的答案
2 3 4 5 6 7 8 9 10 11 12 13 14
5.333333 6.000000 5.333333 NA NA NA NA NA NA NA 6.000000 7.666667 7.333333
感谢。
答案 0 :(得分:0)
我的理解是rollmean是rollapply的优化版本,以函数为中心。如果您不需要增加的性能,可以尝试以下工作
z = c(1,7,8,3,5,NA,NA,NA,NA,NA,3,5,10,8,4)
x = zoo (z, 1:length(z))
rollapply(x,3,mean)
2 3 4 5 6 7 8 9 10 11 12 13 14
5.333333 6.000000 5.333333 NA NA NA NA NA NA NA 6.000000 7.666667 7.333333