1

我有一个关于将 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

谢谢。

4

1 回答 1

1

我的理解是 rollmean 是 rollapply 的优化版本,以 mean 为函数。如果您不需要额外的性能,您可以尝试以下方法

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 
于 2013-10-04T04:28:00.517 回答