我有一个数据框
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
答案 0 :(得分: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
答案 1 :(得分:0)
或者我们可以使用mutate_each
dplyr
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