【问题标题】:Rolling past and future averages from current value从当前值滚动过去和未来的平均值
【发布时间】:2015-03-22 02:56:42
【问题描述】:

我想我大部分时间都在那里,但我不知道如何正确编码。

我从包含 15 个值的单列开始。我想创建两个新列,“previous”包含前两个值的平均值,“future”创建下两个值的平均值。

我的代码失败了,因为它包含当前行的值。
例如,第 3 行或“30”应具有“先前”值 15 ((10+20/2)) 和未来值 45 ((40+50)/2)。相反,它返回 25 和 35,因为它在进行平均时将 30 与 20 或 40 包括在内。

我也被困在如何只显示以前的值。

有人介意告诉我如何避免我遇到的这个问题吗?

我正在使用过滤器,但我不知道是否有更好的方法来做到这一点..

         values=data.frame(col=c(10,20,30,40,50,60,70,80,90,100,110,120,130,140,150))
        values$previous2 = filter(values$col, rep(1/2,2),sides=1)
        values$future2 = filter(values$col, rep(1/2,2),sides=2)
        values$last = #should be the previous value - ex 2nd row should be 10
        values 

【问题讨论】:

  • weight=0分配给当前观察,values$previous2 = filter(values$col, c(0, 1/2, 1/2), sides=1)
  • 哇,好简单。非常感谢!

标签: r time-series average mean moving-average


【解决方案1】:

返回最后一个值试试:

values$last = c(NA,values[-nrow(values),1])

我相信也可以使用lag 函数。

【讨论】:

    猜你喜欢
    • 2021-07-01
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    • 2020-05-06
    • 1970-01-01
    相关资源
    最近更新 更多