首页 > 解决方案 > 每次出现非重复数字时将值增加一

问题描述

v <- c(1,1,2,3,3,3,1,1,3,4,4)

我正在尝试创建一个元素向量,其中第一次出现的非重复数字总是相对于前一个数字增加一个。

这是所需的输出

1,1,2,3,3,3,4,4,5,6,6

这样做的有效方法是什么?

标签: r

解决方案


基本 R 选项rle

> with(rle(v),rep(seq_along(values),lengths))
 [1] 1 1 2 3 3 3 4 4 5 6 6

或者data.table::rleid

> data.table::rleidv(v)
 [1] 1 1 2 3 3 3 4 4 5 6 6

推荐阅读