R中的序列号生成器

时间:2016-12-06 10:32:55

标签: r

我想使用R.My生成序列号序列号取决于某些变量,比如说abc& 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时会刷新。

1 个答案:

答案 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