2015-04-03 93 views
-1

我有一個面板數據集,其中包含每日股票收益。數據如下:使用R中的面板數據將每日股票收益轉換爲年收益

company code company name   date daily return 
      1    A 1990-09-01   0.1 
      1    A 1990-09-02   0.05 
      2    B 1990-09-01   0.01 
      2    B 1990-09-02   0.05 

如何將這些數據轉換爲每年每家公司的年度股票收益率?我試圖將數據轉換爲xts對象,並試圖使用Return.annualized函數,但它不起作用。

+2

你說的意思是「沒有工作」,當你試圖使用'xts'包? – 2015-04-03 04:32:30

+0

我收到錯誤:週期性錯誤(R):無法計算1次觀察的週期性 – Nan 2015-04-03 04:36:45

回答

0

這會給你回報每年每家公司每年(在那裏我已經叫你的樣本數據幀dat):

library(lubridate) 
library(dplyr) 

dat$date = as.Date(dat$date) 
dat$year = year(dat$date) 

dat %>% group_by(company_name, year) %>% 
    summarise(annual_return = prod(1 + daily_return, na.rm=TRUE) - 1) 

    company_name year annual_return 
1   A 1990  0.1550 
2   B 1990  0.0605 
+0

太棒了!非常感謝。 – Nan 2015-04-03 05:10:39

+0

雖然日常的回報數據存在,但我在某些年份獲得了某些公司的NA值,可能是什麼原因?再次感謝。 – Nan 2015-04-03 05:25:43

+0

'daily_return'中是否有任何NA值?這會導致'prod'返回'NA'。查看我的更新答案以獲得修復。 – eipi10 2015-04-03 05:48:58