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
我想要新列 dummy
将 US, 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
我想创建一个虚拟 numeric
列,将 1-1 与现有 character
列映射到 运行 correlation
我的 table 看起来像:
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
希望有人能帮忙!
这可以通过将 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