r - 如何匹配 ID 号以合并两个数据框
问题描述
我有两个数据框,它们的列都有应该匹配的 ID 号。但是,这两个数据帧的 ID 数量不同。一个有 118 个 ID,一个有 103 个 ID。具有 118 个 ID 的数据框虽然具有所有 103 个 ID,但还有一些额外的 ID。我想从 118 行数据框中取出两列,并将它们与基于 ID 号的 103 行数据框中匹配的 ID 合并。我不知道解决这个问题的最简单方法。
解决方案
您应该考虑使用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:返回在两个数据帧中具有匹配值的记录。
LEFT (OUTER) JOIN:从左表返回所有记录,从右表返回匹配的记录。
RIGHT (OUTER) JOIN:从右表返回所有记录,从左表返回匹配的记录。
FULL (OUTER) JOIN:当左表或右表中存在匹配时返回所有记录。
推荐阅读
- domain-driven-design - 我应该避免在没有事件存储的系统中使用聚合 (DDD) 吗?
- python - 有没有办法从 CSS 选择器中获取特定文本?
- python - 使用 Redis 时,Celery 中可靠的任务处理需要什么?
- c++ - 编译错误:变量的类型不完整
- python - Django 休息框架 - 没有这样的表
- ludwig - Ludwig 何时使用 SET 功能、SEQUENCE 功能、两者的示例数据
- javascript - 数组过滤器在 Reactjs 中返回一个空数组
- javascript - 使用 selenium 在 javascript 中解析数据
- node.js - Node Docker 构建和生产容器最佳实践
- google-cloud-platform - 来自 androidpublisher API 的奇怪的 500 错误响应,对解决它没有任何帮助,