2017-04-10 37 views
0

我有一个月度价格回报列表,我想将它们转换为可用价格,以便我可以绘制时间系列图。我正在尝试使用dplyr,但无法完全弄清楚为什么我的解决方案cumprod无法按预期工作。如何使用R中的dplyr将股票收益数据框转换为标准化指数?

这里是我的价格回报:

| 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 + return值?

回答

2

您需要使用mutate,不summarise,你不需要group_by(date)

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 
相关问题