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

如何在R语言中获取合并后的唯一分组?

解决关联实体分组合并问题(连通分量计算)

你遇到的问题是典型的连通分量识别场景——需要把所有存在直接或间接关联的实体合并为同一组,而非仅按初始单向关联分组。以下是基于图论的解决方案,能精准合并所有关联实体:


步骤1:准备环境与数据

首先安装并加载igraph包(用于图结构计算):

install.packages("igraph")
library(igraph)
library(dplyr)

保留你提供的原始数据:

df <- data.frame(uniq_index.x = c(1426, 1426, 1426, 1426, 7796, 7796, 7796, 7796, 
                                  7159, 7159, 7159, 7159, 7857, 7857, 7857, 7857,
                                  7158, 7158, 7158, 7158, 5440, 9861, 1641, 8685,
                                  1644, 7525, 6030, 5672), 
                 uniq_index.y = c(7796, 7159, 7857, 7158, 1426, 7159, 7857, 7158,
                                  1426, 7796, 7857, 7158, 1426, 7796, 7159, 7158,
                                  1426, 7796, 7159, 7857, 9861, 5440, 8685, 1641,
                                  7525, 1644, 5673, 6030)
                 )

步骤2:构建图并计算连通分量

把实体看作图的节点,实体间的关联看作节点间的边,通过连通分量算法合并所有直接/间接关联的节点:

# 提取去重后的关联边(避免重复边干扰计算)
edges <- df %>% select(uniq_index.x, uniq_index.y) %>% unique()

# 创建无向图对象(关联是双向的,比如A关联B等价于B关联A)
graph_obj <- graph_from_data_frame(edges, directed = FALSE)

# 计算所有连通分量(即关联实体组)
components <- components(graph_obj)

# 生成「实体-组ID」映射表
group_mapping <- data.frame(
  uniq_index = as.integer(names(components$membership)),
  group_id = components$membership
) %>% arrange(group_id, uniq_index)

步骤3:查看最终分组结果

按组ID汇总展示所有关联实体:

group_mapping %>% 
  group_by(group_id) %>% 
  summarise(members = paste(uniq_index, collapse = ", "))

运行后会得到符合预期的分组:

  • 组1:1426, 7158, 7159, 7796, 7857
  • 组2:5440, 9861
  • 组3:1641, 8685
  • 组4:1644, 7525
  • 组5:5672, 5673, 6030

其中5672、5673、6030被正确合并为同一组。


步骤4:(可选)生成带唯一机构ID的结果

如果需要和你原有代码格式一致的uniq_agency_id,可以进一步处理:

final_groups <- group_mapping %>% 
  mutate(uniq_agency_id = 100000 + group_id) %>% 
  select(uniq_index, uniq_agency_id)

原有方案问题说明

你之前的代码仅按uniq_index.x分组后合并每组的x/y实体,只能处理直接关联的实体,无法识别间接关联(比如6030关联5673,5672关联6030,三者属于同一关联链但被拆成两组)。而连通分量算法会遍历所有直接/间接连接的节点,确保所有关联实体都被合并。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 21:58:38