在 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
这是另一个使用 rle
和 sequence
的选项
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)]
我有一个数据集,需要创建一个新变量来填充排序数据集中每个变量的按行出现的值,如下所示。
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
这是另一个使用 rle
和 sequence
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)]