R 为连续运行的值创建索引

R 为连续运行的值创建索引,r,sequence,R,Sequence,我有一个向量: test <-c(1,1,0,2,2,3,4,1,1,0) test # [1] 1 1 0 2 2 3 4 1 1 0 最好的方法是什么?使用运行长度编码(rle)、顺序编码和rep r <- rle(test) changes <- rep(seq_along(r$lengths), r$lengths) changes ## [1] 1 1 2 3 3 4 5 6 6 7 r可选选项,它只适用于数字数据 test <-c(1,1,0,2

我有一个向量:

test <-c(1,1,0,2,2,3,4,1,1,0)  
test  
# [1] 1 1 0 2 2 3 4 1 1 0
最好的方法是什么?

使用运行长度编码(
rle
)、
顺序编码和
rep

r <- rle(test)

changes <- rep(seq_along(r$lengths), r$lengths)
changes
## [1] 1 1 2 3 3 4 5 6 6 7

r可选选项,它只适用于数字数据

test <-c(1,1,0,2,2,3,4,1,1,0)  
cumsum(c(1L, diff(test) != 0))
# [1] 1 1 2 3 3 4 5 6 6 7
test <-c(1,1,0,2,2,3,4,1,1,0)  
cumsum(c(1L, diff(test) != 0))
# [1] 1 1 2 3 3 4 5 6 6 7
head(cumsum(c(TRUE, c(tail(test, -1), NA) != test)), -1)
# [1] 1 1 2 3 3 4 5 6 6 7