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

如何基于坐标距离对采样站点进行分组(R语言实操)

解决方案

我们可以利用图论中的连通分量分析来实现站点分组,通过igraph包处理距离矩阵生成的邻接关系,完美匹配你“连通站点归为一组”的需求,具体步骤如下:

1. 加载所需工具包

library(igraph)
library(dplyr)
# 假设你已通过geodist生成距离矩阵dist_matrix

2. 构建邻接矩阵

将距离≤200米的站点对标记为“相邻”(赋值为1),其余站点对赋值为0:

# 生成邻接矩阵
adj_matrix <- ifelse(dist_matrix <= 200, 1, 0)
# 确保邻接矩阵的行/列名与map.dat的唯一坐标行完全对应
rownames(adj_matrix) <- rownames(map.dat)
colnames(adj_matrix) <- rownames(map.dat)

3. 提取连通组件(生成组ID)

把邻接矩阵转化为无向图结构,再提取每个节点的连通组ID:

# 创建无向图(A与B相邻等价于B与A相邻)
site_graph <- graph_from_adjacency_matrix(adj_matrix, mode = "undirected", weighted = NULL, diag = FALSE)
# 获取每个站点所属的连通组件信息
component_info <- components(site_graph)
# 将组ID赋值给map.dat的group列
map.dat$group <- component_info$membership

4. 后续分组汇总

现在可以直接用dplyr按组汇总6000+样本数据:

# 示例:按group汇总某数值变量的均值与样本量
summary_result <- map.dat %>%
  group_by(group) %>%
  summarise(
    avg_measure = mean(your_target_var, na.rm = TRUE),
    sample_count = n()
  )

关键注意事项

  • 必须保证dist_matrix的行/列顺序与map.dat的唯一坐标行完全一致,否则组ID会匹配错误
  • 如果map.dat是从原始6000+样本中提取的唯一坐标集,后续可通过left_join根据坐标将组ID映射回原始数据集

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 03:46:02