gpt4 book ai didi

r - 计算每行的每周返回 - 应用

转载 作者:行者123 更新时间:2023-12-04 11:34:31 25 4
gpt4 key购买 nike

我有一个非常基本的问题,但我不知道如何实现它:我有一个返回数据框,其中每个工具的返回值是按行排列的:

 tmp<-as.data.frame(t(data.frame(a=rnorm(250,0,1),b=rnorm(250,0,1))))

现在我想计算每一行的每周 yield ,即每个后续五个元素的乘积 (=1+return)。这样我就可以获得 50 个非重叠的每周返回。

我怎样才能做到这一点?我希望我能向您说明我的问题。谢谢

最佳答案

嗯,还不是很清楚,但是包 zoo 和函数 rollapply 应该可以满足您的需求(我认为!):

tmp2 <- rollapply(t(tmp) , width = 5 , FUN = function(x) prod( 1 + x ) , by = 5 , by.column = TRUE )
head( tmp2 )
a b
[1,] -6.2279765402 0.2035895290
[2,] 0.4088722374 3.3903379722
[3,] 0.2112797361 -0.3812740172
[4,] 0.7713020593 -0.0559832485
[5,] -0.4930095796 -2.1750123558
[6,] 6.2076460590 0.0188344154

我使用了t()来转置dataframe,width参数设置窗口的大小,by参数设置窗口移动时移动了多少个元素,所以我们的宽度为 5,每次移动 5 个位置,返回 50 个。此外,当我执行 function(x) prod( 1 + x ) 时 R 被矢量化,如果 x 的每个元素不止一个,它会为每个元素加一个,因为我们将宽度设置为 5该函数有 x 的 5 个元素。

并且测试我们发现'a'行的前五列的乘积是:

 1+ tmp[1,1:5]
V1 V2 V3 V4 V5
a -0.4655032 2.02795 2.133612 1.029273 3.004145

prod( 1+ tmp[1,1:5] )
[1] -6.227977

关于r - 计算每行的每周返回 - 应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16165232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com