如何基于r中的长表列表创建面板

时间:2015-06-20 23:23:07

标签: r

我有一个如下数据集:

wk    name      score
3   - Davide -  3.070000
6   - Davide -  3.460000
7   - Davide -  3.480000
48  -Cringe-    2.773333
79  -Fabynsane- 2.330000
69  -PiDjO-     2.070000
61  -sjb-       2.310000

我想使用此信息构建如下所示的面板:

    name1 name2 name3 ...
wk1 
wk2
wk3 
...

我在重塑中尝试了dcast:

panel.num = dcast(data, name + wk ~ score)

但它给了我一个类似下面的面板,这显然不是我想要的那个:

    Authorname  wk.list 1   2   3   4   5   6   7   8   9   10  11  12  13          
2   - Davide -  3   1   NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  
3   - Davide -  6   1   NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  

我想知道出了什么问题以及如何解决这个问题。感谢〜

2 个答案:

答案 0 :(得分:2)

尝试wk ~ name,即

dat <- data.frame(wk=sample(1:100, 10), 
                  name=sample(c("Davide", "Cringe", "Fabynsane"), 10, rep=T),
                  score=runif(10, 2, 3))

library(reshape2)
dcast(dat, wk ~ name)
#    wk   Cringe   Davide Fabynsane
# 1   8       NA 2.225543        NA
# 2  12       NA       NA  2.958040
# 3  46       NA 2.659209        NA
# 4  47       NA 2.086529        NA
# 5  59       NA       NA  2.287232

答案 1 :(得分:1)

其他选项包括

library(tidyr)
spread(dat, name, score)

reshape来自base R

reshape(dat, idvar='wk', timevar='name', direction='wide')