2016-04-13 6 views
0

次のデータセットの行を列に変換する方法を知りたいと思います。行を列に変換する方法R

School class Avg Subavg Sub 
ABC  2 25.3 17.2 Geo 
ABC  2 25.3 18.2 Mat 
ABC  2 25.3 20.2 Fre 
ABC  3 21.2 17.2 Geo 
ABC  3 21.2 18.2 Mat 
ABC  3 21.2 20.2 Ger 
ABC  4 16.8 17.2 Ger 
ABC  4 16.8 18.2 Mat 
ABC  5 20.2 20.2 Fre 

の予想される出力は

School Std stdavg Geo mat Ger  Fer 
ABC 2 25.3 17.2 18.2 NA  20.2 
ABC 3 21.2 17.2 18.2 20.2 NA 
ABC 4 25.3 NA 18.2 17.2 NA 
ABC 5 25.3 NA NA  NA  20.2 

私はスプリット機能を使用し、しかし、無駄になります。事前に

おかげ

+0

'stdavg' および5からspreadを使用することができます意味をなさない。 – akrun

答えて

1

我々はされていないdcast

library(data.table) 
dcast(setDT(df1), School+class+Avg~Sub, value.var="Subavg") 
# School class Avg Fre Geo Ger Mat 
#1: ABC  2 25.3 20.2 17.2 NA 18.2 
#2: ABC  3 21.2 NA 17.2 20.2 18.2 
#3: ABC  4 24.8 NA NA 17.2 18.2 
#4: ABC  5 24.8 20.2 NA NA NA 

を使用するか、期待出力にtidyr

library(tidyr) 
spread(df1, Sub, Subavg) 
4用
+0

残念ながら(幸いにも)、これは私たちが制御できないものです。投票は匿名(神に感謝)で、ランダムな未知の "誰か"にレッスンを教えるチャンスは非常にスリムです。 – zx8754

関連する問題