这是我正在处理的一个模拟数据框架:
df_in <- data.frame(
time = c(1,2,3,4,5,6,7,8,9,10),
state = c(1,1,1,2,2,3,1,1,1,2),
returns = c(0.5,0.2,0.3,0.4,0.1,0.2,1.1,0.8,0.5,0.2)
)
time state returns
1 1 1 0.5
2 2 1 0.2
3 3 1 0.3
4 4 2 0.4
5 5 2 0.1
6 6 3 0.2
7 7 1 1.1
8 8 1 0.8
9 9 1 0.5
10 10 2 0.2
我希望聚合数据,以便在连续行中具有相同"状态"的返回将被计算在一起,最好是组合在一起,但对于此应用程序,简单的求和也很好.
我希望输出如下所示:
df_out <- data.frame(
time_start = c(1,4,6,7,10),
time_end = c(3,5,6,9,10),
state = c(1,2,3,1,2),
returns = c(1.0,0.5,0.2,2.4,0.2)
)
time_start time_end state returns
1 1 3 1 1.0
2 4 5 2 0.5
3 6 6 3 0.2
4 7 9 1 2.4
5 10 10 2 0.2
在这个例子中,我将yield 简单地加在一起,但正如前面所说的,如果可能的话,复合yield 将是最优的.
另有thread个与我试图实现的目标相当接近,但它使用了一个可识别的‘ID’,而这里的州没有.
我并没有try 太多,但正在考虑使用dplyr包中的方法,因为对于这样的事情,它们似乎相当有效.不过,我对这个套餐完全陌生.