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

在R语言中按列A分组聚合列F的所有对应基因

问题描述

给定如下R语言数据框df,需要将列A(第1列)中每个唯一SNP对应的列F(第6列)的所有基因收集汇总,同时去除重复的基因条目,得到按SNP分组的基因集合。

原始数据框

df <- structure(list(A = c("rs1544968", "rs1544968", "rs1544968", "rs1544968", 
"rs1544968", "rs1544968", "rs1544968", "rs1544968", "rs1544968", 
"rs1544968", "rs60296873", "rs60296873", "rs2811442", "rs2811442", 
"rs2811442", "rs2811442"), B = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 10L, 10L, 3L, 3L, 3L, 3L), C = c("2.37E+08", "2,37E+08", 
"2.37E+08", "2,37E+08", "2.37E+08", "2,37E+08", "2.37E+08", "2,37E+08", 
"2.37E+08", "2,37E+08", "33171937", "33171937", "1,3E+08", "1,3E+08", 
"1,3E+08", "1,3E+08"), D = c("A", "A", "A", "A", "A", "A", "A", 
"A", "A", "A", "A", "A", "A", "A", "A", "A"), E = c("G", "G", 
"G", "G", "G", "G", "G", "G", "G", "G", "G", "G", "G", "G", "G", 
"G"), F = c("ENSG00000116984", "ENSG00000186197", "ENSG00000119285", 
"ENSG00000077522", "ENSG00000077522", "ENSG00000116977", "ENSG00000244020", 
"ENSG00000086619", "ENSG00000198626", "ENSG00000077585", "ENSG00000150093", 
"ENSG00000099250", "ENSG00000172765", "ENSG00000170893", "ENSG00000172765", 
"ENSG00000170893")), class = "data.frame", row.names = c(NA, 
-16L))

解决方案

方法一:Base R 实现

利用aggregate()函数按列A分组,对列F去重后汇总:

result_base <- aggregate(F ~ A, data = df, FUN = function(x) paste(unique(x), collapse = ", "))
print(result_base)
  • 说明:先通过unique(x)去除每组内的重复基因,再用paste(..., collapse = ", ")将基因拼接为字符串;F ~ A指定按列A分组汇总列F。

方法二:Tidyverse (dplyr) 实现

如果习惯使用tidyverse语法,可通过分组、去重、汇总三步完成:

library(dplyr)

result_dplyr <- df %>%
  group_by(A) %>%
  distinct(F) %>%
  summarise(genes = paste(F, collapse = ", ")) %>%
  ungroup()

print(result_dplyr)
  • 说明:
    1. group_by(A):按列A的SNP值分组;
    2. distinct(F):剔除每组内重复的基因条目;
    3. summarise(genes = paste(F, collapse = ", ")):将每组基因拼接为字符串;
    4. ungroup():取消分组状态,得到普通数据框。

输出结果示例

两种方法都会得到如下格式的结果:

A                                                                 genes
1 rs1544968 ENSG00000116984, ENSG00000186197, ENSG00000119285, ENSG00000077522, ENSG00000116977, ENSG00000244020, ENSG00000086619, ENSG00000198626, ENSG00000077585
2 rs2811442                                          ENSG00000172765, ENSG00000170893
3 rs60296873                                          ENSG00000150093, ENSG00000099250

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 00:50:02