我有以下数据框,
FECHA Pxlast
1 2010-12-31 332.636
2 2011-01-07 334.327
3 2011-01-14 341.771
4 2011-01-21 331.241
5 2011-01-28 333.252
我必须计算一个名为“滚动4周”的新列,这些值基于以下想法,例如对于索引5,它将是pxlast [5] / pxlast [5-number of weeks] -1
然后我得到4周的表现,在这个例子中它应该是pxlast [5] = 333.252,pxlast [5-4] = 332.636,然后我除它并且我减去-1,所以结果是-0,384
好的,我可以使用“for”循环来完成它;但是阅读一些可以正确执行的功能,我会从PerformanceAnalytics中找到函数 chart.rollingPerformance 。
它将滚动应用于名为FUN的参数,例如“mean”,它将计算宽度空间之间的平均值,但我不知道如何正确计算性能。
以下是输出数据框。
FECHA Pxlast Rolling4W
1 2010-12-31 332.636 NA
2 2011-01-07 334.327 NA
3 2011-01-14 341.771 NA
4 2011-01-21 331.241 NA
5 2011-01-28 333.252 -0,384
NA值是因为我们从4个空格(周)的宽度计算性能。
在没有循环的情况下是否有任何功能?
答案 0 :(得分:0)
require(data.table)
d <- data.table(x = 1:5, y=c(1, 2, 4, 7, 11))
d[, z := shift(y, 4)]
d[, z := y/z - 1]
d
# x y z
# 1: 1 1 NA
# 2: 2 2 NA
# 3: 3 4 NA
# 4: 4 7 NA
# 5: 5 11 10