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

如何在R中筛选出对应不同Outcome的Variant值

在R中找出对应多个不同Outcome的Variant

先构造示例数据

你可以直接运行以下代码生成你提供的数据集:

df <- data.frame(
  Variant = c(1,1,1,1,2,2,2,3,3,4,4,4,4,4,5,5,5,5),
  Outcome = c("A","A","A","B","C","C","C","D","E","F","F","F","G","G","H","H","H","H")
)

解决方案

核心思路是按Variant分组,统计每个组内唯一Outcome的数量,筛选出数量大于1的Variant,以下两种方法都能实现需求:

方法1:基础R实现

不需要额外安装包,用原生函数就能搞定:

# 按Variant分组,计算每组唯一Outcome的数量
outcome_stats <- aggregate(Outcome ~ Variant, data = df, FUN = \(x) length(unique(x)))

# 筛选出有多个不同Outcome的Variant
target_variants <- outcome_stats$Variant[outcome_stats$Outcome > 1]

# 按你想要的格式输出
cat("Variant\n")
if (length(target_variants) > 1) {
  cat(paste(target_variants[-length(target_variants)], collapse = ",\n"), "\n&", target_variants[length(target_variants)])
} else {
  cat(target_variants)
}

方法2:dplyr包实现

如果你常用tidyverse工具,代码更简洁直观:

library(dplyr)

target_variants <- df %>%
  group_by(Variant) %>%
  summarise(unique_outcome_count = n_distinct(Outcome)) %>%
  filter(unique_outcome_count > 1) %>%
  pull(Variant)

# 格式化输出
cat("Variant\n")
if (length(target_variants) > 1) {
  cat(paste(target_variants[-length(target_variants)], collapse = ",\n"), "\n&", target_variants[length(target_variants)])
} else {
  cat(target_variants)
}

两种方法最终都会输出:

Variant
1,
3
& 4

内容的提问来源于stack exchange,提问作者M. waal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 23:47:02