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

如何用dplyr将含lon、lat、id的tibble转换为多边形格式tibble

用dplyr将点数据转换为多边形格式的tibble

你可以通过dplyr的分组汇总功能,把长格式的点数据转换成目标格式的tibble,具体代码如下:

library(dplyr)

# 原始点数据
df <- tibble(
  lon = c(-119.036,-119.002,-119.010,-119.044,-119.036,-119.002,-118.968,-118.977,-119.010,-119.002),
  lat = c(23.097,23.105,23.136,23.128,23.097,23.105,23.112,23.143,23.136,23.105),
  id = c(1,1,1,1,1,2,2,2,2,2)
)

# 转换为目标格式
target_df <- df %>%
  # 按多边形ID分组
  group_by(id) %>%
  # 把每组的经纬度打包成坐标对列表
  summarize(
    geometry = list(pmap(list(lon, lat), ~c(..1, ..2))),
    .groups = "drop"
  ) %>%
  # 将ID转为字符型,匹配目标格式
  mutate(id = as.character(id))

# 查看转换后的结果
target_df

代码说明:

  • group_by(id):按每个多边形的ID分组,确保同一多边形的点被归为一组
  • summarize()里的pmap():把每组的lon和lat一一对应,打包成c(经度, 纬度)的坐标对,再将所有坐标对整合为一个列表,存入geometry列
  • .groups = "drop":完成汇总后取消分组状态,避免后续操作受分组影响
  • mutate(id = as.character(id)):将原始的数值型ID转为字符型,和你需要的目标格式完全匹配

运行上述代码后,得到的target_df就是你想要的结构,可以直接用于后续的多边形转换操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 05:33:12