如何在R中融化我的数据框

时间:2018-08-08 10:03:57

标签: r dataframe melt

我有以下数据框:

      num   type         f
1:      1     aa    0.8103
2:      1     ba    0.7500
3:      2     bb    0.8602
4:      3     bb    0.9017
5:      3     aa    0.6308
6:      3     cc    0.8491

我想重新排列我的数据,以便我的列将是“ num”,行将是“ type”,值将是“ f”,如果没有“ f”,它将写为“ 0” ”,如下所示:

             1        2         3
aa      0.8103        0    0.6308
ba      0.7500        0         0
bb           0   0.8602    0.9017
cc           0        0    0.8491      

任何人都知道如何重新排列数据框吗?

3 个答案:

答案 0 :(得分:4)

library(tidyr)
df %>% spread(num, f, fill=0)

 type      1      2      3
  1   aa 0.8103 0.0000 0.6308
  2   ba 0.7500 0.0000 0.0000
  3   bb 0.0000 0.8602 0.9017
  4   cc 0.0000 0.0000 0.8491

答案 1 :(得分:2)

由于您似乎使用data.table,请尝试

library(data.table)
dcast(data = df, type ~ num, fill = 0)
#  type      1      2      3
#1   aa 0.8103 0.0000 0.6308
#2   ba 0.7500 0.0000 0.0000
#3   bb 0.0000 0.8602 0.9017
#4   cc 0.0000 0.0000 0.8491

答案 2 :(得分:2)

一个base R选项是xtabs

xtabs(f ~ type + num, df1)
#    num
#type      1      2      3
#  aa 0.8103 0.0000 0.6308
#  ba 0.7500 0.0000 0.0000
#  bb 0.0000 0.8602 0.9017
#  cc 0.0000 0.0000 0.8491