问题描述
嘿,
我有一个输入文件,该文件具有一列具有基因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