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

如何在R语言中找出对应col1所有唯一值的col2共同值

当然可以实现!我来给你介绍几种简单的R语言实现方法,都能得到你想要的c("that", "some")结果。

方法1:Base R 原生实现

这种方法不需要额外安装包,用R自带的函数就能完成:

# 先定义你的样本数据
sample <- data.frame(
  "col1" = c("val1", "val1", "val1", "val1", "val2", "val2", "val2", "val3", "val3", "val3", "val3"),
  "col2" = c("this", "that", "some", "thing", "thing", "that", "some", "diff", "some", "this", "that")
)

# 第一步:获取col1的唯一分组总数
total_groups <- length(unique(sample$col1))

# 第二步:统计每个col2值在多少个不同的col1分组中出现
# 先去重每个(col1, col2)组合,避免同一分组内重复值干扰统计
unique_pairs <- unique(sample[c("col1", "col2")])
col2_group_counts <- table(unique_pairs$col2)

# 第三步:筛选出在所有分组都出现的col2值
result <- names(col2_group_counts[col2_group_counts == total_groups])
result
# 输出结果:[1] "some" "that"

逻辑说明

  • 先通过unique()去除同一col1分组内重复的col2值,保证每个分组里的col2值只被统计一次
  • 用table()统计每个col2值对应的分组数量
  • 最后对比统计数和总分组数,筛选出符合条件的条目
方法2:tidyverse/dplyr 风格实现

如果你习惯使用tidyverse生态的语法,这种方法更简洁直观:

library(dplyr)

# 定义样本数据
sample <- data.frame(
  "col1" = c("val1", "val1", "val1", "val1", "val2", "val2", "val2", "val3", "val3", "val3", "val3"),
  "col2" = c("this", "that", "some", "thing", "thing", "that", "some", "diff", "some", "this", "that")
)

result <- sample %>%
  # 去重每个(col1, col2)组合
  distinct(col1, col2) %>%
  # 按col2分组,统计每个值对应的分组数量
  count(col2) %>%
  # 筛选出分组数等于总分组数的条目
  filter(n == n_distinct(sample$col1)) %>%
  # 提取最终的col2值向量
  pull(col2)

result
# 输出结果:[1] "some" "that"

逻辑说明

  • distinct(col1, col2)确保每个分组里的col2值只保留一个
  • count(col2)自动完成分组计数
  • filter(n == n_distinct(sample$col1))直接匹配总分组数
  • pull(col2)把结果从数据框转换成你需要的向量格式

两种方法的结果顺序可能略有不同,但都完全符合你的预期需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:35:23