在data.table中使用左联接时,是否可以创建一个标记来将匹配记录标记为1,将不匹配标记为0?
{{1}}
答案 0 :(得分:1)
一些示例数据:
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
也很容易。