我正在尝试计算标准普尔 500 指数回报的 SD,但我很难在我的 df,SPY 中创建一个包含每日回报的新列,并且没有错误。基本上我想要:
SPY$returns <-(8/7/19 close price / 8/6/2019) - 1 ]
我已经尝试了一些事情,我相信这会在返回列中为我提供正确的值,但我一直收到错误消息。
这是我的数据的负责人:
head(SPY)
# A tibble: 6 x 7
Date Open High Low Close `Adj Close` Volume
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 8/7/2019 284. 289. 282. 288. 288. 135389300
2 8/6/2019 286. 288. 284. 288. 288. 120711700
3 8/5/2019 288. 288. 282. 284. 284. 178745400
4 8/2/2019 294. 294. 291. 293. 293. 116749700
5 8/1/2019 298. 301. 294. 295. 295. 142646600
6 7/31/2019 301. 301. 295. 297. 297. 104245200
SPY$returns <- diff(Close / Close[-length(Close)] - 1)
这是错误消息:
Error in `$<-.data.frame`(`*tmp*`, returns, value = c(0, 0, 0, 0, 0, 0, :
replacement has 6678 rows, data has 6679
In addition: Warning message:
In Close/Close[-length(Close)] :
longer object length is not a multiple of shorter object length
任何帮助将不胜感激。
我的问题的替代解释:我想在 R中执行此操作