这是预数据
Name type cnt
Jay A 1
Jay B 2
John A 3
John B 6
如何像这样设置数据
Name A B
Jay 1 2
John 3 6
data.frame()并没有像我预期的那样充满活力。任何想法?
这是我的真实数据
Name type cnt
1 Anne A 30
2 Barbara A 15
3 Ben A 21
4 Cindy A 100
5 Edd A 105
6 Eric A 22
7 Jacky A 17
8 John A 97
9 Lex A 22
10 Nick A 18
11 Paul A 100
12 DoIt B 66
13 FixIt B 66
14 Anne C 185
15 Barbara C 88
16 Ben C 4
17 Eric C 4
18 Jacky C 92
19 Lex C 7
20 Nick C 3
答案 0 :(得分:4)
使用tidyr
的{{1}}
spread
使用library(tidyr)
spread(df, type, cnt, fill = 0)
的{{1}}
reshape2
或使用dcast
library(reshape2)
dcast(df, Name ~ type, fill = 0)
# Name A B C
#1 Anne 30 0 185
#2 Barbara 15 0 88
#3 Ben 21 0 4
#4 Cindy 100 0 0
#5 DoIt 0 66 0
#6 Edd 105 0 0
#7 Eric 22 0 4
#8 FixIt 0 66 0
#9 Jacky 17 0 92
#10 John 97 0 0
#11 Lex 22 0 7
#12 Nick 18 0 3
#13 Paul 100 0 0
或者
base R
或者
reshape(df, idvar='Name', timevar='type', direction='wide')