【问题标题】:How to match ID numbers to merge two dataframes [duplicate]如何匹配 ID 号以合并两个数据框 [重复]
【发布时间】:2019-06-30 15:42:36
【问题描述】:

我有两个数据框,它们的列都有应该匹配的 ID 号。但是,这两个数据帧的 ID 数量不同。一个有 118 个 ID,一个有 103 个 ID。具有 118 个 ID 的数据框虽然具有所有 103 个 ID,但还有一些额外的 ID。我想从 118 行数据框中取出两列,并将它们与基于 ID 号的 103 行数据框中匹配的 ID 合并。我不知道解决这个问题的最简单方法。

【问题讨论】:

  • 查看函数merge()的帮助文件,或者如果您使用tidyverse,请查看left_join()
  • 看看?dplyr::left_join
  • RStudio 提供了几个不同类别的备忘单,包括“数据转换”。在此处查看链接:rstudio.com/resources/cheatsheets

标签: r pattern-matching


【解决方案1】:

您应该考虑使用merge 指令。假设您有 2 个数据框,并且它们的列 ID 带有标识符:

merge(dataframe1, dataframe2, by = "ID")

如果它们有标识符但列的名称不同(我使用了ID_dfX),您应该在每个数据框中使用:

 merge(dataframe1, dataframe2, by.x = "ID_df1", , by.y = "ID_df2")

这样,您将拥有一个数据帧,其中两个数据帧中的 ID 相同。其余信息被删除。这是inner join

如果您想将一个数据框的信息添加到另一个您可以使用的数据框,假设您不想触摸数据框1并且您只想添加共享ID的数据框2的信息(left join):

merge(dataframe1, dataframe2, by.x = "ID_df1", , by.y = "ID_df2", all.x = TRUE)

您将在此处找到有关联接(合并)的一些信息:

(INNER) JOIN:返回在两个数据帧中具有匹配值的记录。

LEFT (OUTER) JOIN:从左表返回所有记录,从右表返回匹配的记录。

RIGHT (OUTER) JOIN:从右表返回所有记录,从左表返回匹配的记录。

FULL (OUTER) JOIN:当左表或右表匹配时返回所有记录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    相关资源
    最近更新 更多