我需要为特定条件创建一个 id 序列:flag==1,我的问题的一个例子是:
library(dplyr)
set.seed(123)
a <- data.frame(id = 1:10,
flag = rbinom(10,1,0.2))
print(a)
id flag
1 1 0
2 2 0
3 3 0
4 4 1
5 5 1
6 6 0
7 7 0
8 8 1
9 9 0
10 10 0
我尝试仅为 flag==1 创建一个 id 变量,但可悲的是还标识了 flag==0,我的命令结果和期望结果的示例是:
a %>%
mutate(try_seq = cumsum(c(TRUE, diff(flag) != 0)))
> id flag try_seq desire_seq
1 1 0 1 NA
2 2 0 1 NA
3 3 0 1 NA
4 4 1 2 1
5 5 1 2 1
6 6 0 3 NA
7 7 0 3 NA
8 8 1 4 2
9 9 0 5 NA
10 10 0 5 NA
10 10 0 5 NA