从当前值滚动过去和未来平均值

时间:2015-01-23 05:33:05

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

我认为我大部分都在那里,但我无法弄清楚如何正确编码的剩余部分。

我从一个包含15个值的列开始。我想用以前的'创建两个新列。包含前两个值的平均值,以及' future'创建接下来两个值的平均值。

我的代码失败了,因为它包含了当前行的值 例如,row3或' 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 

1 个答案:

答案 0 :(得分:1)

要返回最后一个值,请尝试:

values$last = c(NA,values[-nrow(values),1])
我相信也可以使用

lag函数。