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
我有一个包含一长串随机 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