合并函数生成重复项

时间:2016-06-17 06:19:52

标签: r database merge duplicates

这个问题只是为了理解为什么会这样。

我正在合并两个数据库:

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函数时做错了。

2 个答案:

答案 0 :(得分:1)

geo.2016表格中可能有一行,其中cod.geo值出现两次或更多次。

如果bot.rep数据中的bot.rep值为“X”,那么geo.2016数据中包含“X”的2行,合并将复制bot.rep中的行并加入来自geo.2016的2行。

答案 1 :(得分:1)

这是因为one-to-many relationship,x在y中有多行匹配。

请参阅下面的示例,其中bot.rep cod.geo 1 的值在geo.2016数据集中有2个匹配项。因此,我们有2行1 id。另外,请注意,由于NA参数,我们正在为非匹配的ID创建all.x = TRUE行。

现在,您需要确定cod.geo 1 的哪一行是重复的。

#dummy data
bot.rep <- data.frame(cod.geo = 1:4)
geo.2016 <- data.frame(cod.geo = c(1,1,3,5,6), z = 1:5)

bot.rep.geo <- merge(x = bot.rep, y = geo.2016,
                     by = "cod.geo", all.x = TRUE)

#   cod.geo  z
# 1       1  1
# 2       1  2
# 3       2 NA
# 4       3  3
# 5       4 NA

您可以找到有关merge functions here的不同类型的更多信息。