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

在R中识别数据框跨列重复字符并统计对应所属分组信息

R实现方案

核心处理逻辑

我们可以通过宽表转长表的方式统计每个字符串的出现分组信息,核心依赖tidyverse套件实现,步骤如下:

  • 先将按列存储的分组宽表转为长表,去重同一分组内的重复字符串(同一分组内多次出现同一值默认仅统计一次)
  • 按字符串聚合,统计每个字符串的出现分组列表、出现的分组总数
  • 筛选出在≥2个分组中出现的重复字符串,后续可按分组数灵活筛选

代码实现

依赖包加载

library(tidyverse)

示例数据构造

df <- tibble(
  Group1 = c("AB", "CD", "ED", "GD"),
  Group2 = c("FG", "ZX", "QW", "AS"),
  Group3 = c("SA", "AB", "OI", "ZX"),
  Group4 = c("KD", "ER", "SA", "QW"),
  Group5 = c("CD", "ZX", "AB", "KD")
)

核心统计代码

result_df <- df %>%
  # 宽表转长表,列名转为分组字段,值转为字符串字段
  pivot_longer(cols = everything(), names_to = "group", values_to = "str") %>%
  # 同一分组内重复出现的字符串仅保留1条,不需要该逻辑可删除此行
  distinct(group, str) %>%
  # 按字符串分组聚合
  group_by(str) %>%
  summarise(
    # 存储该字符串出现的所有分组名称
    appear_groups = toString(group),
    # 统计该字符串出现的分组总数
    group_count = n()
  ) %>%
  # 仅保留在至少2个分组中出现的重复字符串
  filter(group_count >= 2) %>%
  # 按出现分组数倒序排列
  arrange(desc(group_count))

筛选与可视化

  • 筛选仅在N个分组中出现的字符串:将N替换为目标数值即可,比如筛选仅在2个分组出现的字符串:
    filter(result_df, group_count == 2)
    
  • 基础可视化示例(重复字符串出现分组数柱状图):
    ggplot(result_df, aes(x = reorder(str, group_count), y = group_count, fill = factor(group_count))) +
      geom_col() +
      coord_flip() +
      labs(x = "字符串", y = "出现的分组数量", fill = "分组数量")
    
    如果分组数量≤5个,也可以用ggvenn包绘制韦恩图,更直观展示跨分组的重叠字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:36:06