我想使用R.My生成序列号序列号取决于某些变量,比如说a
,b
,c
& d
。当这些值中的任何一个发生更改时,序列号将再次从1刷新。
例如
a b c d e sl
1 1 1 1 31 1
1 1 1 1 32 2
1 1 1 1 33 3
2 1 1 1 34 1
此处我的sl
与e相关联,但在更改为2时会刷新。
答案 0 :(得分:2)
我们可以paste
依赖列。在向量中找到相等值的length
,并使用sequence
生成所需的输出。如果任何cols
中的任何值发生更改,则会重置此项。
cols <- c('a','b','c','d')
df$sl <- sequence(rle(with(df[cols], paste0(a,b,c,d)))$lengths)
df
# a b c d e sl
#1 1 1 1 1 31 1
#2 1 1 1 1 32 2
#3 1 1 1 1 33 3
#4 2 1 1 1 34 1