R data.table创建虚拟列,用于映射已存在的列

时间:2015-04-06 10:44:10

标签: r data.table correlation

我想创建一个虚拟的numeric列,用现有的character列映射1-1以运行correlation

我的表格如下:

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

希望有人可以提供帮助!

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}}