计算R中的滚动性能

问题描述 投票:0回答:1

我有以下数据帧,

           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.rolling Performance。

它将滚动应用于一个名为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个空格(周)的宽度计算性能。

有没有循环的任何功能吗?

r dataframe
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.