2013-10-04 35 views
0

我有一個關於將rollmean函數應用於中間有一個長NA的向量的問題。 這裏是一個例子。將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

我的理解是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 
+0

感謝以下,我很高興rollapply仍然可以採取參數填補像rollapply(X,3,平均值,填補= C(「擴展」 ,NA)) – wenching

+0

@亨利克感謝提醒。 – wenching

相關問題