You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言:合并sf地图对象与数据框后行数异常的原因及解决

问题原因与解决方法

异常原因

执行st_cast('POLYGON')后,部分多面多边形(MULTIPOLYGON)被拆分为多个单个多边形(POLYGON),导致nc$NAME出现重复值——同一个县名对应多行数据。
使用merge()按NAME合并时,会对所有同名行做交叉匹配(笛卡尔积)。比如某县名在nc和my_df中各出现2次,合并后会生成4行,最终总行数远超原数据。

解决方法

由于my_df是严格按照nc的行顺序生成的(行与行一一对应),无需用merge(),直接给nc新增列即可:

方法1:直接赋值添加列

# 直接用生成的unemployement_rate向量添加
nc$unemployement_rate <- unemployement_rate

# 或者用my_df中的列
nc$unemployement_rate <- my_df$unemployement_rate

方法2:tidyverse风格添加列

library(dplyr)
nc_merged <- nc %>% mutate(unemployement_rate = my_df$unemployement_rate)

备选:用唯一行ID合并(若必须用merge)

如果一定要使用merge(),可以给每行添加唯一行号作为匹配键:

# 给两个数据集添加唯一行ID
nc$row_id <- seq(nrow(nc))
my_df$row_id <- seq(nrow(my_df))

# 按行ID合并,确保行一一对应
nc_merged <- merge(nc, my_df, by = "row_id", all.x = TRUE)

# 可选:删除临时行ID列
nc_merged$row_id <- NULL

内容的提问来源于stack exchange,提问作者stats_noob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 20:50:21