tidyverse:自定义行号

问题描述 投票:0回答:1

我想要自定义行号,这样如果连续的

A
B
出现但没有
C
则相同的 ID 将重复,如下所示:

必填

   X ID
1  A  1
2  B  2
3  A  3
4  A  3
5  B  4
6  B  4
7  B  4
8  C  5
9  C  5
10 B  6

尝试过

library(tidyverse)
df1 <-
  data.frame(X = c("A", "B", "A", "A", "B", "B", "B", "C", "C", "B"))

df1 %>% 
  mutate(ID = row_number())
#>    X ID
#> 1  A  1
#> 2  B  2
#> 3  A  3
#> 4  A  4
#> 5  B  5
#> 6  B  6
#> 7  B  7
#> 8  C  8
#> 9  C  9
#> 10 B 10
r dplyr tidyverse
1个回答
1
投票

使用

rle

> transform(df1, foo=with(rle(X), rep(seq_along(values), lengths)))
   X foo
1  A   1
2  B   2
3  A   3
4  A   3
5  B   4
6  B   4
7  B   4
8  C   5
9  C   5
10 B   6
© www.soinside.com 2019 - 2024. All rights reserved.