r 为列中的每个 id 创建一个唯一的数值

r create a unique numeric value for every id in column

我有一个包含一长串随机 ID 的数据集。

 ID      
 H001  
 H00A  
 H00M  
 B00A  
 BB0B  
 AB0A  
 AA0B  
 AA0B  
 BB0B   
 H001  
 H00A  
 H001  
 H00M  
 H00Z  
 CC01  
 CD01  
 CC02  
 XT01  
 XT0A  
 XT0A  

我想为每个 ID 创建一个包含数值的新列。最终数据集将如下所示。

 ID      NumId
 H001    1
 H00A    2 
 H00M    3
 B00A    4
 BB0B    5
 AB0A    6
 AA0B    7
 AA0B    7
 BB0B    5
 H001    1
 H00A    2 
 H001    1 
 H00M    3
 H00Z    8
 CC01    9
 CD01    10
 CC02    11
 XT01    12
 XT0A    13
 XT0A    13

非常感谢任何有关如何创建数值等效列的建议。

利用因子在内部是数字这一事实,这很容易:

a<-c('a','b','c','a','b','e')
as.numeric(as.factor(a))
#> [1] 1 2 3 1 2 4

reprex package (v2.0.1)

创建于 2022-02-10

如果您想保留原来的顺序

tmp=df$ID[!duplicated(df$ID)]
match(df$ID,tmp)

 [1]  1  2  3  4  5  6  7  7  5  1  2  1  3  8  9 10 11 12 13 13