使用保留唯一值的公共值聚合行 [英] Aggregate rows with a common value retaining unique values

查看:33
本文介绍了使用保留唯一值的公共值聚合行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已尝试从该数据框开始执行以下操作

    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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆