在合并中会导致“检测到非唯一匹配”错误的原因是什么?

时间:2016-07-07 23:44:50

标签: r merge

我正在尝试合并空间多边形数据框和数据框,但我不断收到“检测到非唯一匹配”错误。我在用于by.x和by.y的列上运行了duplicated(),并且没有检测到重复项。还有什么可能导致这个错误?

> head(AnteNatal.df)
              Country Year(s) AnteNatalValue
1         Afghanistan    2011           14.6
2             Albania    2009           66.8
3              Angola    2009           47.1
4 Antigua and Barbuda    2011          100.0
5           Argentina    2006           24.7
6             Armenia    2010           92.8

> Africa.sh$NAME[1:5]
[1] Angola       Burundi      Benin        Burkina Faso Botswana    
243 Levels: Afghanistan Aland Albania Algeria American Samoa Andorra Angola        Anguilla Antarctica ... Zimbabwe
  

电话

duplicated(Africa.sh$NAME)
duplicated(AnteNatal.df$Country)

两个返回列表都包含所有FALSE。但是,当我尝试合并时,我得到了

> merge(Africa.sh,AnteNatal.df, by.x = "NAME", by.y ="Country")
Error in .local(x, y, ...) : non-unique matches detected

2 个答案:

答案 0 :(得分:20)

使用sp :: merge函数并将duplicateGeoms参数设置为TRUE(如果x和y中的记录之间存在多个匹配项,则x中的TRUE几何重复)

    require(sp)
    ?sp::merge
    merge(spatial_data, data_frame, by = 'match_column', duplicateGeoms = TRUE)

(我知道这个问题比较老了,但是在我自己寻找答案时遇到了它)

答案 1 :(得分:0)

我找到了这个补丁。您可以将这些数据从SP中提取到数据框中。

final_merge <- merge(sp_extract,final_merge, by.x = "name", by.y = "name2" ,all.x = TRUE )

然后您合并到SP,它应该可以工作

 sp_merge  <- sp::merge(sp, final_merge , by.x = "name" , by.y = "name", duplicateGeoms = TRUE,no.dups = FALSE )