在 R 中填充变量的出现值

Populate occurrence value of variable in R

我有一个数据集,需要创建一个新变量来填充排序数据集中每个变量的按行出现的值,如下所示。

VAR1    VAR2 (to be created)
C1      1
C1      2
C1      3
C2      1
C3      1
C3      2
C4      1
C5      1

提前感谢您的帮助。

unlist(sapply(rle(as.character(df$VAR1))$lengths,seq))
#[1] 1 2 3 1 1 2 1 1

这是另一个使用 rlesequence

的选项
with(df1, sequence(rle(VAR1)$lengths))
#[1] 1 2 3 1 1 2 1 1

ave

with(df1, ave(seq_along(VAR1), 
        cumsum(c(TRUE, VAR1[-1]!= VAR1[-length(VAR1)])), FUN = seq_along))
#[1] 1 2 3 1 1 2 1 1

或使用 data.table

中的 rleid
library(data.table)
setDT(df1)[, VAR2 := seq_len(.N) , by = rleid(VAR1)]