我想创建一个虚拟的numeric
列,用现有的character
列映射1-1以运行correlation
我的表格如下:
Code
US
UK
VN
US
VN
UK
我希望新列dummy
将US, UK, VN
映射到1, 2, 3
Code dummy
US 1
UK 2
VN 3
US 1
VN 3
UK 2
希望有人可以提供帮助!
答案 0 :(得分:5)
或者您可以简单地使用内置的.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
答案 1 :(得分:2)
这可以通过将Code
列转换为factor
类,并将levels
指定为unique
Code
元素并将其转换为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
match
或在'代码'之间使用unique
。以及'代码'
DT[, dummy:= match(Code, unique(Code))]
元素
chmatch
data.table
来自DT[, dummy:= chmatch(Code, unique(Code))]
{{1}}