return 具有每个值的位置出现的向量的 R 函数?

R function that return a vector with position occurence of each value?

我正在搜索一个函数,该函数 return 一个向量,其中每个向量值的 position/count。

举个例子:

我有:

vec<-c("A","A","A","B","B","C")

我要:

c(1,2,3,1,2,1)

我创建了一个有效的函数,但我正在寻找一种更快的方法来获取它,因为我有一个大数据集。

非常感谢您

一种方法是在 base R 中使用 ave :

vec<-c("A","A","A","B","B","C")
result <- as.integer(ave(vec, vec, FUN = seq_along))
result
[1] 1 2 3 1 2 1

我们可以使用 rowid 来自 data.table

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