NA 的 rollmeanr 问题
rollmeanr issue with NA
对于基地,令:
library(zoo)
x1=c(1,2,3,4)
x2=rollmeanr(x1,2,fill=NA)
x=cbind(x1,x2)
x1 x2
[1,] 1 NA
[2,] 2 1.5
[3,] 3 2.5
[4,] 4 3.5
但是如果基地里有NA
,rollmeanr
就不行了:
x1[1]=NA
x3=rollmeanr(x1,2,fill=NA)
cbind(x1,x2,x3)
x1 x2 x3
[1,] NA NA NA
[2,] 2 1.5 NA
[3,] 3 2.5 NA
[4,] 4 3.5 NA
x3[3]
应该是 2.5
因为它有 2 个先例数据。
有办法解决这个问题吗?
zoo
在版本 1.8-2 (https://cran.r-project.org/web/packages/zoo/NEWS) 附近更改了 rollmean
的行为:
Changes in Version 1.8-2
- The rollmean(x, k, ...) method now calls rollapply(x, k, (mean), ...) in
case x contains any NAs (as the fast cumsum-based solution in rollmean is
not applicable in this case). Analogously for rollsum() and rollmedian().
(Reported by Jan Gorecki.)
所以您看到的行为是在版本 1.7 中;如果你升级到 1.8(正如我猜 @phiver 所做的那样)那么你应该看到你的预期结果。
对于基地,令:
library(zoo)
x1=c(1,2,3,4)
x2=rollmeanr(x1,2,fill=NA)
x=cbind(x1,x2)
x1 x2
[1,] 1 NA
[2,] 2 1.5
[3,] 3 2.5
[4,] 4 3.5
但是如果基地里有NA
,rollmeanr
就不行了:
x1[1]=NA
x3=rollmeanr(x1,2,fill=NA)
cbind(x1,x2,x3)
x1 x2 x3
[1,] NA NA NA
[2,] 2 1.5 NA
[3,] 3 2.5 NA
[4,] 4 3.5 NA
x3[3]
应该是 2.5
因为它有 2 个先例数据。
有办法解决这个问题吗?
zoo
在版本 1.8-2 (https://cran.r-project.org/web/packages/zoo/NEWS) 附近更改了 rollmean
的行为:
Changes in Version 1.8-2
- The rollmean(x, k, ...) method now calls rollapply(x, k, (mean), ...) in case x contains any NAs (as the fast cumsum-based solution in rollmean is not applicable in this case). Analogously for rollsum() and rollmedian(). (Reported by Jan Gorecki.)
所以您看到的行为是在版本 1.7 中;如果你升级到 1.8(正如我猜 @phiver 所做的那样)那么你应该看到你的预期结果。