将 ID 分配给连续的组列 r

Vic*_*uiz 2 grouping r unique dataframe cumulative-sum

我想在 data.frame 中生成一个列来计算组的连续 id(虚拟 df 中的 s 列)

dummy_df = data.frame(s = c("a", "a", "b","b", "b", "c","c", "a", "a", "c", "c","a","a"),
                  desired_output= c(1,1,1,1,1,1,1,2,2,2,2,3,3))
dummy_df$rleid_output = rleid(dummy_df$s)
dummy_df
Run Code Online (Sandbox Code Playgroud)
   s desired_output rleid_output
1  a              1            1
2  a              1            1
3  b              1            2
4  b              1            2
5  b              1            2
6  c              1            3
7  c              1            3
8  a              2            4
9  a              2            4
10 c              2            5
11 c              2            5
12 a              3            6
13 a              3            6
Run Code Online (Sandbox Code Playgroud)

我会说它类似于什么rleid(),但在看到新组时重新开始计数。但是,我找不到这样直接的方法。谢谢。

H 1*_*H 1 5

你可以做:

dummy_df$out <- with(rle(dummy_df$s), rep(ave(lengths, values, FUN = seq_along), lengths))
Run Code Online (Sandbox Code Playgroud)

结果:

   s desired_output out
1  a              1   1
2  a              1   1
3  b              1   1
4  b              1   1
5  b              1   1
6  c              1   1
7  c              1   1
8  a              2   2
9  a              2   2
10 c              2   2
11 c              2   2
12 a              3   3
13 a              3   3
Run Code Online (Sandbox Code Playgroud)