我有一个数据框
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)第3季度组1的/previous so (3-2)/2 =.5
发布于 2016-09-07 05:29:30
由于您的数据不是时间序列对象,因此可以使用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发布于 2016-09-07 11:25:56
或者我们可以使用dplyr中的mutate_each
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.2500000https://stackoverflow.com/questions/39357940
复制相似问题