答案 0 :(得分:1)
以下是data.table
library(data.table)
test_dt<-data.table(group=c(rep(1,3),rep(2,3)),time=c(36:38,36:38),dummy=c(0,1,1,0,1,1))
test_dt[,trend:=cumsum(dummy),by=group] #your operation
group time dummy trend
1: 1 36 0 0
2: 1 37 1 1
3: 1 38 1 2
4: 2 36 0 0
5: 2 37 1 1
6: 2 38 1 2
这依赖于你的虚拟0/1,数据被排序,并且虚拟在第一次在该组中变为1之后总是1。