R 将三列数据帧转换为矩阵

R 将三列数据帧转换为矩阵,r,R,这是问题的继续[ 我有一个数据框,如下所示: 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 我想将数据帧转换为以下格式 Ch

这是问题的继续[

我有一个数据框,如下所示:

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
我想将数据帧转换为以下格式

       Cha1  Cha2  Cha3  Cha4  Cha5  KI2  TH1

Gene1   1     1     1     1      0    0    0
Gene2   1     0     0     2      4    2    2
我觉得这是一个重塑数据的问题,但我不知道如何重塑数据-

你可以这样做

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

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

library(tidyr)
spread(df1, Rptname, freq, fill=0)
如果原始数据集是“dat”,也可以使用表来完成

你可以

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

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

library(tidyr)
spread(df1, Rptname, freq, fill=0)
如果原始数据集是“dat”,也可以使用表来完成