使用 dplyr 按顺序标记每个唯一值

Sequentially label each unique value using dplyr

我正在寻找一种方法来按顺序标记列中的每个唯一事件。

例如,

df
  x
1 A
2 A
3 B
4 C
5 C
6 D

会导致:

df
  x event
1 A     1
2 A     1
3 B     2
4 C     3
5 C     3
6 D     4

我发现我可以使用

这样的循环来做到这一点
events <- unique(df$x)
for(i in 1:length(events){
  df$event[df$x == events[i]] <- i
}

但如果可能的话,我想找到一个 dpylr 解决方案。

试试这个:

# example data
set.seed(123)

df <- data.frame(
  x = sample(LETTERS[1:5], 10, replace = TRUE)
)
df <- df[order(df$x), , drop = FALSE]

# Label unique event
df$event <- as.numeric(factor(df$x))

df
#>    x event
#> 8  A     1
#> 3  B     2
#> 4  B     2
#> 9  B     2
#> 1  C     3
#> 2  C     3
#> 5  C     3
#> 10 C     3
#> 7  D     4
#> 6  E     5

reprex package (v2.0.1)

于 2021-11-26 创建

给你:

df <- tibble(x= c("A", "A","B","C","C","D")) 

df1 <- tibble(x = unique(df$x),
              event = seq(1,length(x),1))

res <- left_join(df, df1, by="x")