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

使用spdplyr对空间数据执行group_by分组操作未生效如何解决?

问题原因
  • sp类空间数据的geometry为S4类型结构,spdplyr封装的group_by默认无法直接对该类型列执行聚合判断,同时你原有代码中summarise未指定空间聚合函数,仅直接调用geometry列不会自动完成合并,因此分组不生效。
解决方案

方案1:转换为sf对象(推荐,适配tidyverse语法)

sf是当前R生态主流的空间数据格式,原生支持dplyr的分组、去重操作:

  1. 先将sp对象转为sf对象
library(sf)
datos_sf <- st_as_sf(datos_esp1)
  1. 按需执行去重/分组:
  • 直接删除所有列完全重复的行:
datos_sf_limpios <- datos_sf |> 
  distinct(.keep_all = TRUE)
  • 按城市名分组,保留每个城市唯一的几何边界:
datos_sf_agrupado <- datos_sf |> 
  group_by(nombre_alcaldia) |> 
  summarise(geometry = st_union(geometry), .groups = "drop")

如果同一个城市的所有重复行几何完全一致,st_union会直接返回单个多边形,自动完成去重。

方案2:保留sp对象格式直接去重

如果不需要后续tidyverse操作,可直接使用sp包自带的去重函数:

library(sp)
datos_limpios <- remove.duplicates(datos_esp1)

内容的提问来源于stack exchange,提问作者Jorge Hernández

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:36:08