在 R data.frame 中设置从零开始的唯一 ID

Set unique IDs which start from zero in R data.frame

我有一个看起来像这样的数据框

column1
 1
 1
 2
 3
 3

并且我想为每个元素指定一个唯一 ID。我的问题是我不能 找到一种方法让唯一 ID 从零开始,像这样

column1 column2
 1        0
 1        0
 2        1
 3        2
 3        2

感谢任何帮助

试试这个,cur_group_id from dplyr 将从 1 创建 id,但您可以轻松地使其从零开始:

library(dplyr)
#Data
df <- structure(list(column1 = c(0L, 1L, 2L, 3L, 3L)), class = "data.frame", row.names = c(NA,-5L))
#Mutate
df %>% group_by(column1) %>% mutate(id=cur_group_id()-1)

# A tibble: 5 x 2
# Groups:   column1 [4]
  column1    id
    <int> <dbl>
1       0     0
2       1     1
3       2     2
4       3     3
5       3     3

我们可以使用 match

library(dplyr)
df1 %>% 
     mutate(column2 = match(column1, unique(column1)) - 1)

数据

df1 <- structure(list(column1 = c(1L, 1L, 2L, 3L, 3L)), class = "data.frame",
row.names = c(NA, 
-5L))