如何在R中使用dplyr将股票收益数据帧转换为标准化指数?
我有一个每月价格回报的列表,我想把它们转换成可用的价格,这样我就可以绘制时间序列图。我正在尝试使用如何在R中使用dplyr将股票收益数据帧转换为标准化指数?,r,dplyr,R,Dplyr,我有一个每月价格回报的列表,我想把它们转换成可用的价格,这样我就可以绘制时间序列图。我正在尝试使用dplyr,但不太明白为什么我使用cumprod的解决方案不能像我预期的那样工作 这是我的价格申报表: | date | MSCI_return | ------------------------------ | 2000-12-29 | 0.000000 | | 2001-01-31 | 0.037419 | | 2001-02-28 | -0.04045
dplyr
,但不太明白为什么我使用cumprod
的解决方案不能像我预期的那样工作
这是我的价格申报表:
| date | MSCI_return |
------------------------------
| 2000-12-29 | 0.000000 |
| 2001-01-31 | 0.037419 |
| 2001-02-28 | -0.040455 |
| ... | ... |
以下是缩短版的dput:
prices = structure(list(date = structure(c(11320, 11353, 11381, 11411, 11442), class = "Date"), MSCI_return = c(0, 0.0374195168328921, -0.0404549887278276, 0.00126350901483074, 0.0255771959613151)), .Names = c("date", "MSCI_return"), row.names = c(NA, -5L), class = "data.frame")
以下是目前困扰我的代码:
prices %>% group_by(date) %>% summarise(price = cumprod(MSCI_return + 1))
cumprod
不应该给我1+返回值的累计乘积吗 您需要使用mutate
,而不是summary
,并且您不需要按(日期)分组
:
您需要使用mutate
,而不是summary
,并且不需要按(日期)分组
:
prices %>%
mutate(price = cumprod(MSCI_return + 1))
date MSCI_return price
1 2000-12-29 0.000000000 1.0000000
2 2001-01-31 0.037419517 1.0374195
3 2001-02-28 -0.040454989 0.9954507
4 2001-03-30 0.001263509 0.9967085
5 2001-04-30 0.025577196 1.0222015