重新组织R中的矩阵或数据框

时间:2017-03-22 05:24:06

标签: r dataframe

我在R中有一个数据框,其中行是基因名称,列是基因本体ID,所以它看起来像这样:

Gene     V1    V2    V3      
Gene 1   GO1   GO2   GO3      
Gene 2   GO2   
Gene 3   GO2   GO3   

我试图重新排列它,以便行是唯一的基因本体ID,每个匹配这些ID的基因都在该行的单独列中:

GO    V1     V2     V3
GO1   Gene1 
GO2   Gene1  Gene2  Gene 3
GO3   Gene1  Gene3 

我研究了reshape2,但它似乎对这种重组没什么用。有没有一种简单的方法可以做到这一点,我忽略了?

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

可以使用melt/dcast完成此操作。转换' data.frame'到' data.table' (setDT(df1)),重塑成长期'格式为melt(来自data.table),根据' GO'和dcast删除空白行' long'广泛'

library(data.table)
dcast(melt(setDT(df1), id.var = "Gene", value.name = "GO")[GO != ""], 
        GO ~ paste0("V", rowid(variable)), value.var = "Gene", fill="")
#    GO     V1     V2     V3
#1: GO1 Gene 1              
#2: GO2 Gene 1 Gene 2 Gene 3
#3: GO3 Gene 1 Gene 3