And*_*rew 3 r pattern-matching
我有两个数据框,它们的列的 ID 号应该匹配。但是,这两个数据帧没有相同数量的 ID。一个有 118 个 ID,一个有 103 个 ID。具有 118 个 ID 的数据帧虽然包含所有 103 个 ID,但还有一些额外内容。我想从 118 行数据框中取出两列,并根据 ID 号将它们与 103 行数据框中匹配的 ID 合并。我不知道解决这个问题的最简单方法。
你应该考虑使用merge指令。假设您有 2 个数据框并且它们具有ID带有标识符的列:
merge(dataframe1, dataframe2, by = "ID")
Run Code Online (Sandbox Code Playgroud)
如果它们有标识符但列的名称ID_dfX在每个数据框中不同(我使用了),您应该使用:
merge(dataframe1, dataframe2, by.x = "ID_df1", , by.y = "ID_df2")
Run Code Online (Sandbox Code Playgroud)
有了这个,您将拥有一个数据帧,其中两个数据帧中的 ID 相同。其余信息被删除。这是一个inner join.
如果要将一个数据框的信息添加到另一个可以使用,假设您不想触摸 dataframe1 并且只想添加共享 ID ( left join)的 dataframe2 的信息:
merge(dataframe1, dataframe2, by.x = "ID_df1", , by.y = "ID_df2", all.x = TRUE)
Run Code Online (Sandbox Code Playgroud)
在这里,您将找到有关连接(合并)的一些信息:
(INNER) JOIN:返回在两个数据框中具有匹配值的记录。
LEFT (OUTER) JOIN:返回左表中的所有记录,以及右表中匹配的记录。
RIGHT (OUTER) JOIN:返回右表中的所有记录,以及左表中匹配的记录。
FULL (OUTER) JOIN:当左表或右表中存在匹配时,返回所有记录。
| 归档时间: |
|
| 查看次数: |
7636 次 |
| 最近记录: |