【问题标题】:R and Zoo: moving average with ragged data?R 和 Zoo:数据参差不齐的移动平均线?
【发布时间】:2016-12-28 18:01:35
【问题描述】:

我想计算移动平均值以用已知条目 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. Using rollmean when there are missing values (NA)

【问题讨论】:

    标签: r zoo moving-average ragged


    【解决方案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 用于运行命令 :) 你将如何填充 hh 的结尾? hh 有 12 个元素,而这里的前一个候选者有 8 个元素,而这里的后一个候选者有 9 个元素(有一个 NaN。有没有任何选项可以用一些默认值填充 NaN 值,例如 1?
    • @Rhodo 两个函数都会产生错误。显示输出后,设置的参数应该是 width 而不是 by
    • @ReganAlpha 我建议输入?rollapply 并查找名为fill 的参数
    【解决方案2】:

    假设您想要滚动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
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 2022-01-26
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 2017-09-01
      相关资源
      最近更新 更多