微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么在 r 中应用 merge(x,y,all.x=T) 函数后我得到更多行?

如何解决为什么在 r 中应用 merge(x,y,all.x=T) 函数后我得到更多行?

我确实有两个数据集:data2 和 data 3。

data3的相关信息要加到data2的各行中,两个集合中的公共列是Inschrijfjaar和Leeftijd。

我正在使用代码:data4=merge(x=data2,y=data3,by=c("Inschrijfjaar","Leeftijd"),all.x=TRUE)

检查给我: 昏暗(数据 2)结果 525380 5 暗淡(数据 3)结果 1707 7 昏暗(数据 4)结果 5307668 10

所以合并没有正确完成,data4的维度也应该是525380,因为是左关节。所以我得到的行比左边的数据集多。可能是什么原因?

我也试过代码:data4=merge(x=data2,all.x=TRUE)

解决方法

对不起,我不能发表评论,这不是一个完整的答案,而是一个评论: 有许多不同形式的连接。

我发现它们解释得很好here

您执行一个左连接,它返回左表中的所有行,以及右表中具有匹配键的所有行。因此,您希望 data4 中有更多值。

你真正想要的似乎是一个左半连接“半连接就像一个内连接,除了它只返回 X 的列(不包括 Y 的列),并且不会重复 X 的行以匹配 Y 的行”(来自 this question,它可以帮助您回答问题)。

,

当您的列 c("Inschrijfjaar","Leeftijd") 中有多行具有相同值的 data3(并且这些值出现在 data2 中)时,会发生此行为。如果data3中的数据可以与data2中的多条记录合并,它们都会被包含在内,导致data4中的记录比data2中的多

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。