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

如何用R的dplyr包生成排除自身的Duplicate_IDs列?

正确生成排除自身的重复ID列的dplyr实现

原代码的问题是直接拼接了分组内的所有ID,没有排除当前行的ID,导致每行得到的是组内全部ID,而非除自身外的重复ID。以下是两种正确实现方式:

方式一:结合purrr包处理

library(dplyr)
library(purrr)

data <- data %>%
  group_by(`Column A`, `Column B`, `Column C`) %>%
  mutate(Duplicate_IDs = ifelse(
    n() > 1,
    map_chr(id, ~paste(setdiff(id, .x), collapse = ",")),
    NA_character_
  )) %>%
  ungroup()

逻辑说明:

  • 按Column A、Column B、Column C分组,识别重复组
  • 仅当组内行数大于1时生成重复ID列表,否则赋值为NA
  • 用map_chr逐行处理:对当前行的ID,通过setdiff从组内所有ID中移除自身,再拼接成字符串

方式二:仅用base R + dplyr实现

如果不想引入purrr包,可使用sapply替代:

library(dplyr)

data <- data %>%
  group_by(`Column A`, `Column B`, `Column C`) %>%
  mutate(Duplicate_IDs = ifelse(
    n() > 1,
    sapply(id, function(x) paste(id[id != x], collapse = ",")),
    NA_character_
  )) %>%
  ungroup()

逻辑说明:

  • 核心逻辑与方式一一致,通过sapply遍历每个ID,筛选出组内不等于当前ID的元素后拼接

运行任意一种代码,都能得到预期的Duplicate_IDs列:

  • id=8的行将得到10
  • id=17的行将得到18,19
  • id=20的行保持NA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 02:27:32