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

R语言dplyr如何提取分组后含最小start与最大end的完整唯一行

解决方法

你可以用分组后筛选行的逻辑替代summarize汇总逻辑,就能保留全部原字段:

library(dplyr)

result <- data %>%
  # 按seqname分组
  group_by(seqname) %>%
  # 筛选当前组内start为最小值、end为最大值的行
  filter(start == min(start), end == max(end)) %>%
  # 若同一分组下存在多行同时满足条件,可加下行保留第一条,也可按需求自定义排序后取行
  slice_head(n = 1) %>%
  # 解除分组,方便后续处理
  ungroup()

补充说明

如果更习惯用你原来的summarize思路,也可以通过左连接关联回原表实现:

result <- data %>%
  group_by(seqname) %>%
  summarize(min_start = min(start), max_end = max(end), .groups = "drop") %>%
  left_join(data, by = c("seqname" = "seqname", "min_start" = "start", "max_end" = "end")) %>%
  # 处理同一seqname匹配到多行的情况,保留第一行
  distinct(seqname, .keep_all = TRUE)

如果有多个符合条件的行需要指定优先级,可以在筛选后加arrange()按你需要的字段排序(比如要选score最小的就加arrange(score)),再取第一行即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:45:02