R 和 Zoo:数据参差不齐的移动平均线?

R and Zoo: moving average with ragged data?

我想计算移动平均数以用已知条目 3、5 和 1 填充 NA 条目。如何使用 R 中的 zoo 包执行此操作?

输入

> library(zoo)
> hh <- c(NA, NA, NA, 3, NA, 5, NA, 1, NA, NA, NA, NA)

失败

Fail with 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

Fail with 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

相关

  1. Using rollmean when there are missing values (NA)

假设您想要滚动 mean 四个值(您将 k=1 传递给 rollmean),您需要告诉 mean 删除 NA

library(zoo)
rollapply(hh, 4, function(x) mean(x, na.rm=TRUE))

[1]   3   3   4   4   3   3   1   1 NaN

虽然这 returns 与您想要的输出有所不同。如果你想要不同的东西,你需要进一步解释。

取决于您要查找的内容,那么:

   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