R data.table 创建映射存在列的虚拟列

R data.table create dummy column which map existed column

我想创建一个虚拟 numeric 列,将 1-1 与现有 character 列映射到 运行 correlation

我的 table 看起来像:

Code
US
UK
VN
US
VN
UK

我想要新列 dummyUS, UK, VN 映射到 1, 2, 3

Code     dummy
US       1
UK       2
VN       3
US       1
VN       3
UK       2

希望有人能帮忙!

这可以通过将 Code 列转换为 factor class 并将 levels 指定为 [=13= 的 unique 元素来完成] 并将其转换回 numeric 并将其分配 (:=) 给 dummy

library(data.table)
DT[, dummy:=as.numeric(factor(Code, levels=unique(Code)))][]
#     Code dummy
#1:   US     1
#2:   UK     2
#3:   VN     3
#4:   US     1
#5:   VN     3
#6:   UK     2

或者在 'Code'

的 'Code' 和 unique 元素之间使用 match
DT[, dummy:=  match(Code, unique(Code))]

chmatch 来自 data.table

DT[, dummy:= chmatch(Code, unique(Code))]

或者您可以简单地使用内置的 .GRP 函数

DT[, dummy := .GRP, by = Code][]
#    Code dummy
# 1:   US     1
# 2:   UK     2
# 3:   VN     3
# 4:   US     1
# 5:   VN     3
# 6:   UK     2