R中特定值的计数器顺序

Counter sequential of specific values in R

我有一个这样的专栏:

a = c(3, 1, 2, 3, 3, 3, 1, 3, 2, 3, 3, 1, 3, 2, 1, 3, 1)

我想要一个按顺序计算 1 和 2 的列来制作这样的列:

   a b
1  3 0
2  1 1
3  2 2
4  3 2
5  3 2
6  3 2
7  1 3
8  3 3
9  2 4
10 3 4
11 3 4
12 1 5
13 3 5
14 2 6
15 1 7
16 3 7

我们可以在逻辑向量上使用cumsum

df1$b <- cumsum(df1$a %in% c(1, 2))

数据

df1 <- data.frame(a)