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

R语言使用dplyr管道筛选仅出现在单一分组的数据行

问题原因

distinct(Rank6, .keep_all = TRUE)的作用仅为按Rank6列去重、保留每个Rank6首次匹配到的行,不会校验每个Rank6在不同method分组中的覆盖情况,因此结果会混入同时存在于两个分组的条目,无法实现「筛选仅在manual组出现、未在automated组出现的Rank6」的需求。

正确实现代码

你的数据集本身已经按Rank6完成分组,可以直接在分组内做条件筛选:

library(dplyr)

gen_gr1_byMeth %>%
  filter(!"automated" %in% method)

如果要规避原数据自带分组的干扰,也可以用通用写法,无论原数据是否提前分组都能得到正确结果:

gen_gr1_byMeth %>%
  ungroup() %>%
  group_by(Rank6) %>%
  filter(!"automated" %in% method)
结果说明

运行上述代码后会返回你需要的唯一目标条目:

# A tibble: 1 × 3
# Groups:   Rank6 [1]
  Rank6                 method avg_abundance
  <chr>                 <chr>          <dbl>
1 Bacteria_unclassified manual        0.0106
  • 筛选逻辑说明:按Rank6分组后,判断每个分组下的method取值集合中是否不存在automated,符合该条件的Rank6就是仅出现在manual组的条目。
  • 等价筛选条件:你也可以把判断条件替换为all(method == "manual"),和上述逻辑完全等价,即组内所有行的method均为manual。
  • 拓展用法:如果需要筛选仅出现在automated组的条目,把判断条件改为!"manual" %in% method即可,会返回Lachnospiraceae_ge和Paraclostridium两个仅在自动方法组存在的条目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 19:06:34