计算R中的滚动性能

时间:2018-02-28 11:41:46

标签: r dataframe

我有以下数据框,

           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个空格(周)的宽度计算性能。

在没有循环的情况下是否有任何功能?

1 个答案:

答案 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