我想计算移动平均线,用已知的条目3,5和1填充NA条目。如何使用R中的包动物园完成此操作?
输入
> library(zoo)
> hh <- c(NA, NA, NA, 3, NA, 5, NA, 1, NA, NA, NA, NA)
失败
使用rollmean失败
> rollmean(hh,na.omit=TRUE,k=1) [1] NA NA NA NA NA NA NA NA NA NA NA NA > rollmean(hh,4, na.omit=TRUE,k=1) [1] NA NA NA NA NA NA NA NA NA NA NA NA > rollmean(hh,4, na.rm=TRUE,k=1) [1] NA NA NA NA NA NA NA NA NA NA NA NA
使用Rollapply失败
> rollapply(hh, 4, function(x) mean(x)) [1] NA NA NA NA NA NA NA NA NA
预期输出类似
> COMMAND(hh, movingAverageNumber, function(x) mean(x)) [1] 3 3.3 3.4 3 4 5 3 1 2 1.5 1.2 1 0.8
相关
答案 0 :(得分:1)
根据您正在寻找的内容,如何:
rollapply(hh, 5, mean, na.rm = TRUE)
[1] 3 4 4 3 3 3 1 1
或
rollapply(hh, 4, mean, na.rm = TRUE)
[1] 3 3 4 4 3 3 1 1 NaN
答案 1 :(得分:0)
假设您希望滚动mean
四个值(将k=1
传递给rollmean
),则需要告诉mean
删除NA
< / p>
library(zoo)
rollapply(hh, 4, function(x) mean(x, na.rm=TRUE))
[1] 3 3 4 4 3 3 1 1 NaN
虽然这会返回与所需输出不同的内容。如果你想要不同的东西,你需要进一步解释。