当缺少序列值时,将向量排序为重复序列 R

Sort vector into repeating sequence when sequential values are missing R

我想采用这样的向量:

x <- c(1,1,1,2,2,2,2,3,3)

并将此向量排序为重复序列,当值不存在时保持 1、2、3 的层次顺序。

return: c(1,2,3,1,2,3,1,2,2)

我们可以根据'x'

的顺序创建order
x[order(ave(x, x, FUN = seq_along))]
#[1] 1 2 3 1 2 3 1 2 2

或与 rowid 来自data.table

library(data.table)
x[order(rowid(x))]
#[1] 1 2 3 1 2 3 1 2 2