【发布时间】:2018-11-07 18:43:33
【问题描述】:
在 data.table 中使用左连接时,有没有办法创建一个标志,将匹配的记录标记为 1,不匹配的记录为 0?
Result <- merge(Employees, Departments, all.x=TRUE)
Result <- Departments[Employees] # same as above
【问题讨论】:
标签: r data.table
在 data.table 中使用左连接时,有没有办法创建一个标志,将匹配的记录标记为 1,不匹配的记录为 0?
Result <- merge(Employees, Departments, all.x=TRUE)
Result <- Departments[Employees] # same as above
【问题讨论】:
标签: r data.table
一些样本数据:
library(data.table)
dt1 <- data.table(a=1:3)
dt2 <- data.table(a=c(1L,3L,4L))
我将就地创建一个虚拟变量并合并:
merge(dt1, dt2[,used:=TRUE,], all=TRUE)
# a used
# 1: 1 TRUE
# 2: 2 NA
# 3: 3 TRUE
# 4: 4 TRUE
(我在这里使用all=TRUE,根据需要进行修改。)从这里,您可以修复NA 值:
merge(dt1, dt2[,used:=TRUE,], all=TRUE)[,used_int := as.integer(!is.na(used)),][]
# a used used_int
# 1: 1 TRUE 1
# 2: 2 NA 0
# 3: 3 TRUE 1
# 4: 4 TRUE 1
我按照您的建议转换为整数,但删除as.integer 并保留logical 一样容易。
【讨论】: