2016-09-06 59 views
0

我有一个数据帧计算回报多组

data.frame(quarter= c(1,2,3), group1 = c(1,2,3), group2 = c(6,8,10)) 

什么是生产按季度归还所以结果

quarter group1 group 2 
2   1.0  .333 
3   .5  .25 

,其中回报计算是最好的方式(目前值 - PRevious)/ previous因此对于季度3组1(3-2)/ 2 = .5

+1

'申请(DF [2:3],2,函数(X)(X-dplyr ::滞后(X))/ dplyr: :滞后(X))' – shayaa

回答

1

由于您的数据不是时间序列对象,因此您可以使用apply来操作您的data.frame:

> data.frame(quarter=df[-1,1], apply(df[,-1], 2, function(x) diff(x)/x[-length(x)])) 
    quarter group1 group2 
1  2 1.0 0.3333333 
2  3 0.5 0.2500000 
0

或者,我们可以使用mutate_eachdplyr

library(dplyr) 
df %>% 
    mutate_each(funs(c(NA, diff(.))/lag(.)), group1:group2) %>% 
    na.omit 
# quarter group1 group2 
#2  2 1.0 0.3333333 
#3  3 0.5 0.2500000