我有以下数据集:
dt < - data.drame(v1 = c(0,0,0,0,1,0,0,1))
由此,我只是想创建一个ID,以1的值停止。
ID应该是
ID <-c(1,2,3,4,1,2,3)
您可以简单地在基本R中使用AVE:
使用(dt,ave(v1,c(0,cumsum(v1)[ - 长度(v1)])),fun = seq_along))
#[1] 1 2 3 4 1 2 3
或者,如果您在dplyr中也可以使用lag(),并且只需创建组,就可以在每个组中分配行号:
图书馆(dplyr)
dt%>%group_by(gr = lag(cumsum(v1),默认= 0))%>%突变(id = row_number())