【问题标题】:how to create a match flag for left join in data.table如何为 data.table 中的左连接创建匹配标志
【发布时间】: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


    【解决方案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 一样容易。

    【讨论】:

      猜你喜欢
      • 2021-04-20
      • 2012-04-12
      • 1970-01-01
      • 2016-04-08
      • 2015-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多