使用保留唯一值的公共值聚合行 [英] Aggregate rows with a common value retaining unique values
本文介绍了使用保留唯一值的公共值聚合行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我已尝试从该数据框开始执行以下操作
Chr Gene.Symbols
2 chr1 GSTM1
3 chr2 MIR4432
4 chr2 BCL11A
5 chr2 PAPOLG
6 chr2 LINC01185
7 chr2 LINC01185
8 chr2 LINC01185, REL
9 chr2 REL
10 chr2 REL
11 chr2 REL
12 chr2 REL
13 chr2
14 chr2 PUS10
15 chr2 PEX13, KIAA1841
我想要此结果:
Chr Gene.Symbols
2 chr1 GSTM1
3 chr2 MIR4432,BCL11A,PAPOLG,LINC01185,REL,PUS10,PEX13,KIAA1841
我已经设法使用以下命令将基因符号聚合在一起:
aggregate(Gene.Symbols~Chr, data, paste, collapse = ",")
我从其他问题(如this one)中了解到此信息,但我无法删除重复项。
有人能帮帮我吗?
更新: 我还需要一个文件,每行只包含一个基因名称(没有"Chr"列)。我怎样才能变换这些基因名称呢? 我现在从一个文件开始,该文件的行数与Chr相同,并且每一行的Gene.Symbols列中都有几个基因。
推荐答案
甚至还有另一个选项:
library(splitstackshape) # automatically loads the 'data.table'-package
cSplit(mydf, 'Gene.Symbols', sep = ','
, direction = 'long')[, .(Gene.Symbols = toString(unique(Gene.Symbols)))
, by = Chr]
这提供了:
Chr Gene.Symbols 1: chr1 GSTM1 2: chr2 MIR4432, BCL11A, PAPOLG, LINC01185, REL, PUS10, PEX13, KIAA1841
这篇关于使用保留唯一值的公共值聚合行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文