【问题标题】:Convert a three column dataframe into matrix [duplicate]将三列数据框转换为矩阵[重复]
【发布时间】:2015-06-10 00:45:43
【问题描述】:

这是问题的延续 [Get frequency using two groupings in a dataframe

我有一个如下的数据框:

Gene    Rptname   freq
Gene1   Cha1      1
Gene1   Cha2      1
Gene1   Cha3      1
Gene1   Cha4      1
Gene2   Cha1      1
Gene2   TH1       2
Gene2   KI2       2
Gene2   Cha4      2
Gene2   Cha5      4

我想把dataframe转换成如下格式

       Cha1  Cha2  Cha3  Cha4  Cha5  KI2  TH1

Gene1   1     1     1     1      0    0    0
Gene2   1     0     0     2      4    2    2

我感觉这是一个重塑数据的问题,但我不知道如何重塑数据-

【问题讨论】:

    标签: r


    【解决方案1】:

    你可以的

    xtabs(freq~., df1)
    #         Rptname
    #Gene    Cha1 Cha2 Cha3 Cha4 Cha5 KI2 TH1
    # Gene1    1    1    1    1    0   0   0
    # Gene2    1    0    0    2    4   2   2
    

    或者

    library(reshape2)
    acast(df1, Gene~Rptname, value.var='freq', fill=0)
    #       Cha1 Cha2 Cha3 Cha4 Cha5 KI2 TH1
    #Gene1    1    1    1    1    0   0   0
    #Gene2    1    0    0    2    4   2   2
    

    或使用spread 获取“data.frame”输出

    library(tidyr)
    spread(df1, Rptname, freq, fill=0)
    

    如果您的原始数据集是“dat”,也可以使用table 完成此操作

    table(dat[c('Gene', 'Rptname')])
    

    【讨论】:

      猜你喜欢
      • 2015-01-06
      • 2020-10-31
      • 2016-09-27
      • 2021-11-12
      • 1970-01-01
      • 2017-06-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多