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

如何使用dplyr查找特定列取值完全相同的分组

实现方法

方法1:dplyr + tidyr 简洁实现

核心思路是先按letter分组聚合,判断每组number的集合是否重复,再映射回原表:

library(dplyr)
library(tidyr)

xx_result <- xx %>%
  nest(number_col = number) %>%
  mutate(duplicated = duplicated(number_col) | duplicated(number_col, fromLast = TRUE)) %>%
  unnest(number_col)

运行后得到的结果和你给出的预期输出完全一致。


方法2:仅用dplyr实现

如果不想依赖tidyr的嵌套函数,可以用分组聚合后左连接的方式实现:

library(dplyr)

xx_result <- xx %>%
  # 提取每个letter对应的number集合
  group_by(letter) %>%
  summarise(num_set = list(number), .groups = "drop") %>%
  # 双向检查标记所有重复的集合,保证第一个出现的重复组也会被标为TRUE
  mutate(duplicated = duplicated(num_set) | duplicated(num_set, fromLast = TRUE)) %>%
  # 将重复标记映射回原表
  right_join(xx, by = "letter") %>%
  select(letter, number, duplicated)

核心逻辑说明

两种方法都利用了duplicated()的双向检查逻辑,同时从前往后、从后往前扫描分组集合,保证所有存在重复的分组(包括第一个出现的重复分组)都会被标记为TRUE,而不是仅标记第二次及之后出现的重复分组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:24:00