2016-04-13 11 views
0

Ich würde gerne wissen, wie Zeilen für das folgende Dataset in Spalten umgewandelt werden.wie Zeilen in Spalten umgewandelt werden in 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 

Erwartete Ausgabe wäre

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 

I Split-Funktion verwendet, aber vergeblich.

Vielen Dank im Voraus

+0

Der 'stdavg' für 4 und 5 in dem erwarteten Ausgang nicht verwenden verwenden Sinn machen. – akrun

Antwort

1

Wir 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 

Oder spread von tidyr

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

Leider (glücklicherweise) können wir dies nicht kontrollieren. Und da das Voting anonym ist (Gott sei Dank), ist die Chance, einem zufällig unbekannten "Jemand" eine Lektion zu erteilen, sehr gering. – zx8754

Verwandte Themen