2016-03-28 104 views
0

我有以下数据框。将第一列的行值转换为R中的列

Student Score 
Thomas  23.6 
Sally  28.1 
Chris  27.9 
Morrison 32.5 
Thomas  30.3 
Sally  54.2 
Morrison 44.3 
Chris  99.2 

如何转换成

Thomas Sally Morrison Chris 
23.6  28.1  32.5  27.9 
30.3  54.2  44.3  99.2 

注意:它不具备有以上数据帧的确切顺序。

我试着用reshape2,reshape,dcast,melt,cbind等来改变它,我找不到任何有用的东西。

+0

'reshape(pooling_df,idvar =“batchNum”,timevar =“Pooling_QC”,direction =“wide”)'给我警告。 – cooldood3490

回答

1

reshape2包中使用dcast函数。

d1 <- read.table(text="Student Score 
Thomas  23.6 
Sally  28.1 
Chris  27.9 
Morrison 32.5 
Thomas  30.3 
Sally  54.2 
Morrison 44.3 
Chris  99.2", head=T, as.is=T) 

library(dplyr) 

d2 <- d1 %>% group_by(Student) %>% mutate(cn=1:n()) 

library(reshape2) 

dcast(d2, cn~Student, value.var = "Score") 
# cn Chris Morrison Sally Thomas 
# 1 1 27.9  32.5 28.1 23.6 
# 2 2 99.2  44.3 54.2 30.3