我有以下数据集:
DT < -数据。德拉姆(v1 = c (0, 0, 0, 1, 0, 0, 1))
在此基础上,我只想创建一个ID,其累积值为1。
ID应该是
ID < - c(1、2、3、4、1、2、3)
你可以简单地在基数R中使用ave:
with(DT, ave(v1, c(0, cumsum(v1)[-length(v1)]), FUN = seq_along))
#[1] 1 2 3 4 1 2 3
或者如果你也想在dplyr中,你可以使用lag()来创建组,你可以在每个组中分配行号:
库(dplyr)
DT %>% group_by(gr = lag(cumsum(v1), default = 0)) %>% mutate(ID = row_number())