我正在尝试合并空间多边形数据框和数据框,但我不断收到“检测到非唯一匹配”错误。我在用于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
答案 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 )