【问题标题】:Can dplyr join on multiple columns or composite key?dplyr 可以加入多列或复合键吗?
【发布时间】:2014-12-24 01:22:45
【问题描述】:

我意识到dplyr v3.0 允许您加入不同的变量:

left_join(x, y, by = c("a" = "b") 将匹配 x.ay.b

但是,是否可以加入变量组合,还是必须事先添加复合键?

类似这样的:

left_join(x, y, by = c("a c" = "b d") 匹配 [x.ax.c] 到 [y.by.d] 的串联

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    更新以使用 tibble()

    您可以将长度大于 1 的命名向量传递给 left_join()by 参数:

    library(dplyr)
    
    d1 <- tibble(
      x = letters[1:3],
      y = LETTERS[1:3],
      a = rnorm(3)
      )
    
    d2 <- tibble(
      x2 = letters[3:1],
      y2 = LETTERS[3:1],
      b = rnorm(3)
      )
    
    left_join(d1, d2, by = c("x" = "x2", "y" = "y2"))
    

    【讨论】:

    • 谢谢你;当数据框中的列具有相同的名称时也可以使用,例如left_join(d1, d2, by = c("firstname" = "firstname", "lastname" = "lastname"))。对某些人来说可能并不明显。
    • 连接列相同时,也可以避免=:left_join(d1, d2, by = c("firstname", "lastname"))
    • 哎呀...我一直在坚持,但是...这似乎是一个 AND... 我想这是有道理的,但我希望它是一个 x=x2 OR y =y2,因为我构建了多个索引来尝试识别不同资源中重复但损坏的条目。
    • 名称不必相同,应该只是相应数据框中的有效列名,即一个可以有一个列“fname”和另一个“firstname”,并且可以正常工作.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-19
    • 2012-12-05
    • 1970-01-01
    • 2017-08-16
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    相关资源
    最近更新 更多