場景
有這麼個需求,需要處理連續重複出現的數列,去重,並保留原始的順序。如數據:
a <- c(1,1,1,1,2,2,3,3,3,1,1,1,3,3,4,4,2,2,2,2)
一般去重用unique會變成c(1,2,3,4)
,或者duplicated之類的。
但這裏的需求是變成c(1,2,3,1,3,4,2)
有點像是向量按分組去重的感覺。
解決方案
a <- c(1,1,1,1,2,2,3,3,3,1,1,1,3,3,4,4,2,2,2,2)`
rle(a)
# Run Length Encoding
# lengths: int [1:7] 4 2 3 3 2 2 4
# values : num [1:7] 1 2 3 1 3 4 2
rle(a)$values
# 1 2 3 1 3 4 2