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

How to melt my dataframe in r

我有以下数据框:

      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      

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

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

由于您似乎使用 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

一个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