我有两个数据框,每个数据框的ID编号都应该匹配。但是,两个数据帧没有相同数量的ID。一种具有118个ID,一种具有103个ID。虽然具有118个ID的数据帧具有所有103个ID,但还有一些其他功能。我想从118行数据帧中提取两列,并将它们与基于ID号与103行数据帧中匹配的ID合并。我不知道解决此问题的最简单方法。
答案 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:返回在两个数据框中具有匹配值的记录。
左(外)联接:从左表返回所有记录,并从右表返回匹配的记录。
右(外)联接:从右表返回所有记录,并从左表返回匹配的记录。
完全(外部)联接:在左表或右表中存在匹配项时,返回所有记录。