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

如何用R代码判断不同A分组的B值集合一致并合并分组?

按A分组的B值集合匹配分配Group

原始数据

AB
1a
2c
2e
3f
4h
5c
5e

需求

若不同A分组下的所有B值完全匹配(集合一致,不考虑顺序),则将这些A分组归为同一Group。例如A=2和A=5的B值均为c、e,应归为同一Group,期望结果如下:

ABGroup
1a1
2c2
2e2
3f3
4h4
5c2
5e2

现有代码问题

你尝试的代码中,先按A分组后又按B分组,导致cur_group_id()是基于单个B值生成的,而非A对应的B值集合,所以结果不符合预期。

正确实现代码

library(readxl)
library(dplyr)
library(stringr)

# 读取原始数据
data1 <- read_excel("testing.xlsx")

# 生成A与Group的映射关系
group_mapping <- data1 %>%
  group_by(A) %>%
  # 将B值排序后拼接成字符串,消除顺序对集合匹配的影响
  summarise(b_set = str_c(sort(B), collapse = ","), .groups = "drop") %>%
  # 根据B值集合分配唯一Group ID
  mutate(Group = cur_group_id())

# 将Group关联回原始数据
data2 <- data1 %>%
  left_join(group_mapping, by = "A")

代码说明

  1. 先按A分组,对每个A对应的B值排序后拼接成字符串,这样只要B值集合相同,拼接后的字符串就一致,不受B值顺序影响。
  2. 对唯一的B值集合分配Group ID,确保相同集合的A对应同一个Group。
  3. 通过left_join将Group信息关联回原始数据,得到符合需求的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 02:19:53