【发布时间】: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