如何在 R 中的同一数据框中计算重叠的三天日志 returns?

How do I calculate overlapping three-day log returns in the same dataframe in R?

我刚开始学习 R。至于现在,我在数据框 test 中有价格 PRC 以及日期和其他几个变量。

我的目标是在 same 数据帧中计算以下内容,以便我可以保持与日期的连接。
1.重叠三天日志returns
2. 一日日志returns

通过其他帖子,我分别针对三天延迟 returns 和一天延迟 returns 提出了以下代码,但我仍然不确定如何将其合并到我的代码中数据框:

test$logR3 <- diff(log(test$PRC)), lag=3)

由于行数不同,此代码目前无效。我该如何考虑这一点?我可以以某种方式输入零或 NA 来填充缺失的行吗?

提前致谢。

可能是这样的:

days=c()
for(i in seq(3,nrow(test),3)){  #loop through it in steps of 3
    one_day_ago_diff=log(test$PRC[i])-log(test$PRC[i-1]) #difference between today and yesterday
    three_days_ago_diff=log(test$PRC[i])-log(test$PRC[i-3]) #difference between today and three days ago
    days=c(days,c(three_days_ago_diff,NA,one_day_ago_diff)) # fills empty vector with diff from 3 days ago- followed by NA to skip 2 days ago and then one day ago
}

if(length(days)<nrow(test)){days=c(days, rep(NA,nrow(test)-length(days)))} #check they're the same length
test$lags=days #add column to test