比较不同的行并删除重复的值

时间:2015-02-23 14:53:42

标签: r dataframe

    Category                 Genes
"Tissue morphology"       "AKT, TGF1B, IFNG, IgG, Igm"
"Tissue morphology"       "ELOVL3, EREG, FABP5, FOXP3, glycerol, GSTO1, HDAC1"
"Tissue morphology"       "AKT, FABPS, Igm"
"Cell growth"             "AICDA, BID, CD200R1, CD36, CSF2"
"Cell growth"             "5-hydroxytryptamine, adenosine triphosphate, AICDA"

我有几个表,其中包含几个具有相同值的行("分类"),但在“Genes”列中有一些不同/相同的值。我想将所有行合并为#34;类别"一起成一行并保持唯一的一行并删除重复。 有没有更好的方法来解决这个问题?我试过"相交"和"合并"。但是,不是真的很干净和容易。 我已经找到了答案,但还没找到任何答案,所以我非常感谢任何帮助!

    Category                 Genes
"Tissue morphology"         "AKT, TGF1B, IFNG, IgG, Igm, ELOVL3, EREG, FABPS, FABP5, FOXP3, glycerol, GSTO1, HDAC1"
"Cell growth"               "5-hydroxytryptamine, adenosine triphosphate, AICDA, BID, CD200R1, CD36, CSF2" 

1 个答案:

答案 0 :(得分:1)

为此,我们可以使用data.table(其他选项包括aggregatedplyr等)。将“data.frame”转换为“data.table”(setDT(df1)),按“类别”分组,拆分列“Genes”(strsplit),unlist,{{1粘贴在一起(sorttoString

的包装器
paste(., collapse=", ")

或者可以删除重复元素而不拆分字符串,但不会按字母顺序排序

library(data.table)
DT1 <- setDT(df1)[, list(Genes=toString(sort(unique(unlist(strsplit(Genes, 
                ', ')))))), by=Category]

DT1$Genes
#[1] "AKT, ELOVL3, EREG, FABP5, FABPS, FOXP3, glycerol, GSTO1, HDAC1, IFNG, IgG, Igm, TGF1B"
#[2] "5-hydroxytryptamine, adenosine triphosphate, AICDA, BID, CD200R1, CD36, CSF2"