如何为data.table中的左联接创建匹配标志

时间:2018-11-07 18:43:33

标签: r data.table

在data.table中使用左联接时,是否可以创建一个标记来将匹配记录标记为1,将不匹配标记为0?

{{1}}

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也很容易。