如何根据R中的分组值列出列中的行值?

问题描述

嘿,

我有一个输入文件,该文件具有一列具有基因ID的列,然后具有一个GO术语,每个基因具有多行(从1到> 20的任何位置)。我需要生成的格式中,每个唯一的基因ID都有一行,第二行中的GO项用分号分隔。

我的数据:

GeneID    GO
am1001    190909
am1001    600510
am1002    500050
am1002    432323
am1002    100209

所需的输出:

GeneID    GO_list
am1001    190909; 600510
am1002    ​50050; 432323; 100209

我尝试过类似How to create new columns in a data.frame based on row values in R?的操作,但没有成功。

在此先感谢您的建议! :)

解决方法

我建议使用下一种base R方法:

#Data
df <- structure(list(GeneID = c("am1001","am1001","am1002","am1002"),GO = c(190909L,600510L,500050L,432323L,100209L
)),class = "data.frame",row.names = c(NA,-5L))

代码:

#Aggregation
aggregate(GO~GeneID,data=df,FUN = function(x) paste0(x,collapse = '; '))

输出:

  GeneID                     GO
1 am1001         190909; 600510
2 am1002 500050; 432323; 100209

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...