我有以下数据框:
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
任何人都知道如何重新排列数据框吗?
答案 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