这个问题只是为了理解为什么会这样。
我正在合并两个数据库:
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
函数时做错了。
答案 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的不同类型的更多信息。