0

嘿嘿,

我有一个输入文件,该文件有一列带有基因 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

我尝试过类似于如何根据 R 中的行值在 data.frame 中创建新列?但没有成功。

提前感谢您的建议!:)

4

1 回答 1

2

我建议下base R一种方法:

#Data
df <- structure(list(GeneID = c("am1001", "am1001", "am1002", "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
于 2020-08-24T22:46:24.667 回答