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

如何在R中基于关键列相同值合并数据框的重复行

解决方案

你已经完成了group_by(gene_id)的分组步骤,后续可以用dplyr的summarise()函数按规则聚合各列即可,因为你提到同一gene_id对应的非坐标类字段值完全一致,直接取分组内任意一个值即可:

library(dplyr)

# 通用写法,自动适配所有列,不需要手动逐个指定表达列
df_unique_gene <- df %>%
  # 同一个基因的染色体编号必然一致,加入分组避免异常数据问题,不需要可删除
  group_by(gene_id, `#chr`) %>%
  summarise(
    # 坐标列按规则聚合
    start = min(start, na.rm = TRUE),
    end = max(end, na.rm = TRUE),
    # 其余所有列取分组内第一个值即可
    across(.cols = everything(), .fns = first),
    # 聚合完成后自动取消分组
    .groups = "drop"
  ) %>%
  # 可选:恢复和原始数据完全一致的列顺序
  select(all_of(colnames(df)))

如果你的dplyr版本低于1.0.0不支持across()函数,可以用手动指定列的写法:

df_unique_gene <- df %>%
  group_by(gene_id) %>%
  summarise(
    `#chr` = first(`#chr`),
    start = min(start, na.rm = TRUE),
    end = max(end, na.rm = TRUE),
    # 按你的实际列名替换下面的示例表达列名即可
    sample1 = first(sample1),
    sample2 = first(sample2),
    # ...其余表达列依次添加
    .groups = "drop"
  )

参数说明

  • na.rm = TRUE:避免start/end列存在缺失值时聚合结果出错,如果你确认数据无缺失可以删除该参数
  • 最终输出的df_unique_gene每行对应唯一的gene_id,可以直接将gene_id列设置为行名使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 11:24:09