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

如何在R中合并两个shapefile并对含19个字段的文件做均值计算

操作实现方案

这个需求完全可以通过R的空间数据处理工具实现,核心用到sf包完成矢量数据读取、空间连接、聚合统计操作,具体步骤如下:

前期准备

  • 先安装并加载所需依赖包
install.packages(c("sf", "dplyr"))
library(sf)
library(dplyr)

步骤1:读取两个shapefile文件

# 读取第一个含4个字段的shapefile,替换为你的本地文件路径
shp1 <- st_read("path/to/your/first_shapefile.shp")
# 读取第二个含19个字段的shapefile,替换为你的本地文件路径
shp2 <- st_read("path/to/your/second_shapefile.shp")

注意:两个shapefile需要保证坐标系一致,如果坐标系不同先用st_transform()函数统一坐标系后再进行后续操作。

步骤2:对第二个shapefile的19个字段做均值聚合

如果是按第一个shapefile的矢量单元分组,统计第二个文件对应范围内的字段均值,操作如下:

# 提取第二个shapefile的19个非几何字段名,排除几何列
shp2_fields <- setdiff(names(shp2), attr(shp2, "sf_column"))
# 空间连接+分组统计均值
shp_agg <- st_join(shp1, shp2) %>%
  group_by(across(all_of(names(shp1)))) %>%
  summarise(across(all_of(shp2_fields), mean, na.rm = TRUE))

如果是按属性关联合并,两个文件存在公共ID类字段,可以把上述st_join替换为left_join,指定公共关联字段即可。

步骤3:提取指定字段,输出最终结果

# 获取第一个文件第三个字段的名称
field3_name <- names(shp1)[3]
# 保留目标字段+几何列,生成最终文件
final_shp <- shp_agg %>%
  select(all_of(c(field3_name, shp2_fields)))
# 导出合并后的shapefile
st_write(final_shp, "path/to/output/merged_result.shp", delete_layer = TRUE)

计算均值时如果不需要忽略空值,可以删除na.rm = TRUE参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:24:03