场景
有这么个需求,需要处理连续重复出现的数列,去重,并保留原始的顺序。如数据:
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