如何匹配ID号以合并两个数据框

时间:2019-02-06 16:07:23

标签: r pattern-matching

我有两个数据框,每个数据框的ID编号都应该匹配。但是,两个数据帧没有相同数量的ID。一种具有118个ID,一种具有103个ID。虽然具有118个ID的数据帧具有所有103个ID,但还有一些其他功能。我想从118行数据帧中提取两列,并将它们与基于ID号与103行数据帧中匹配的ID合并。我不知道解决此问题的最简单方法。

1 个答案:

答案 0 :(得分: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

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

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

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

  

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

     

左(外)联接:从左表返回所有记录,并从右表返回匹配的记录。

     

右(外)联接:从右表返回所有记录,并从左表返回匹配的记录。

     

完全(外部)联接:在左表或右表中存在匹配项时,返回所有记录。