缺失值时使用rollmean(NA)

时间:2013-07-20 17:51:50

标签: r xts zoo

我有一个数据集,里面有几个NA。我采取滚动的方法,并期望当窗口中没有NA时,滚动平均值应该生成一个数字而不是NA,但是rollmeanr zoo似乎没有这样做。例如:

require(zoo)
z = zoo(cbind(a=0:10, b=c(NA,10:1), c=sample(1:11,11)), 1:11) 
rollmeanr(z, k=3, fill=NA)
    a  b        c
1  NA NA       NA
2  NA NA       NA
3   1 NA 3.333333
4   2 NA 4.666667
5   3 NA 4.000000
6   4 NA 6.333333
7   5 NA 7.000000
8   6 NA 9.333333
9   7 NA 8.333333
10  8 NA 8.666667
11  9 NA 5.666667

rollapply(z, width=3, FUN=mean, by=1, by.column=TRUE, fill=NA, align="right")
    a  b        c
1  NA NA       NA
2  NA NA       NA
3   1 NA 3.333333
4   2  9 4.666667
5   3  8 4.000000
6   4  7 6.333333
7   5  6 7.000000
8   6  5 9.333333
9   7  4 8.333333
10  8  3 8.666667
11  9  2 5.666667

我希望这两个调用能够生成相同的结果。请评论。一些会话信息:

sessionInfo()
R version 3.0.1 (2013-05-16)
Platform: x86_64-unknown-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=C                 LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
 [1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] zoo_1.7-10

loaded via a namespace (and not attached):
 [1] grid_3.0.1      lattice_0.20-15

3 个答案:

答案 0 :(得分:13)

来自?rollmean

  

'rollmean'的默认方法没有        处理包含'NA'的输入。在这种情况下,使用'rollapply'        代替。

答案 1 :(得分:1)

使用'partial = TRUE'选项。该选项可以使用NA计算数据。

2017 League Table Ranking: 25th

如果要将第一行中的“NaN”更改为“0”,请将“fill = NA”修改为“fill = 0”。

答案 2 :(得分:0)

为了完成它,rollum也无法处理包含'NA'的输入。在这种情况下,请改用“rollapply”。