【发布时间】:2016-10-18 20:56:30
【问题描述】:
这个问题只是为了理解为什么会发生这种情况。
我正在合并两个数据库:
bot.rep.geo <- merge(x = bot.rep, y = geo.2016, by = "cod.geo", all.x = TRUE)
原始数据库有以下维度:bot.rep 有 1634451 个观测值,geo.2016 有 1393 个。
使用all.x = TRUE 合并后,新数据库出现1727681,而不是与bot.rep 相同的大小。
为什么会这样?
快速查看后,我意识到它创建了一些重复项,但我不明白原因以及我在使用 merge 函数时是否做错了什么。
【问题讨论】:
-
通过选择
all.x = TRUE,您相当于在SQL 中使用LEFT JOIN。这并不意味着来自bot.rep的给定行只会出现一次。相反,它会在cod.geo中的每个匹配出现一次,并且bot.rep中的每一行即使不匹配任何内容也保证出现。 -
向我们展示一些示例数据,这将一目了然。
-
感谢@TimBiegeleisen 的澄清。有什么办法可以防止这种情况发生,还是只需要事后删除重复项?
-
@RafaelSierra 做一个
unique(merge(x = bot.rep, y = geo.2016, by = "cod.geo", all.x = TRUE))...和之后做的一样...合并函数没有唯一的参数 -
你们是对的。我没有意识到我有一个特定的变量,我正在创建一个与其他 3 个连接的特定变量。变量是 1 1 11,但有一种情况是 1 11 1 可能发生,而我之前没有注意到。谢谢大家的帮助!
标签: r database merge duplicates