0

我想计算移动平均值以用已知条目 3、5 和 1 填充 NA 条目。如何使用 R 中的包 zoo 来做到这一点?

输入

> 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

有关的

  1. 有缺失值时使用 rollmean (NA)
4

2 回答 2

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
于 2016-12-28T19:53:43.330 回答
0

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

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

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

尽管这会返回与您想要的输出不同的东西。如果您想要不同的东西,您需要进一步解释这一点。

于 2016-12-28T19:52:25.560 回答