如何在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