2016-07-20 11 views
0

ich einen Datenrahmen haben, die wie folgt aussehen:wie ein Datagramm in R durch eine Spalte organisieren

Quality  Data  Name 
    1   667  white 
    2   647  white 
    3   626  white 
    1   345  Blue 
    2   550  Blue 
    3   730  Blue 
    1   500  red 
    2     red 
    3   123  red 

Wie kann ich es in einer Weise zusammenführen, dass es das gleiche wie Qualität:

Quality  Data  Name  Data Name Data Name 
    1   667  white  345  Blue 500  red 
    2   647  white  550  Blue NULL red 
    3   626  white  730  Blue 123  red 
+1

Sie sind sich bewusst, dass die Wiederholung von Spaltennamen zu Extrahierungsdeutigkeit führt? Wenn das in Ordnung ist, dann probiere diesen Ausdruck aus: 'df1' ist der Name des Datensatzes' setNames (do.call ("cbind", c (liste (unique (df1 $ Quality)), split (df1 [-1], df1 $ Name))), c (Namen (df1) [1], rep (Namen (df1) [- 1], Länge (eindeutig (df1 $ Name))))) ' –

+0

Ich versuche dies zu tun: http : //stackoverflow.com/questions/38470111/how-to-graph-with-geom-ribbon aber niemand kann das beantworten, also jam, der versucht, einen Weg zu finden, es zu tun – Arya

+0

Ich wünschte, du hättest verbunden werden müssen deine vorherige Frage von Anfang an. Diese Arbeit wird nicht zu Ihrer Lösung führen. Wir haben jetzt einen Datenrahmen erstellt, aber die Struktur wurde zerstört. Wir haben Farben in mehreren Spalten, Werte in mehreren Spalten. –

Antwort

1

Wir können dies für weitere Erklärung trennen, aber das Herz des Ausdrucks ist split(df1[-1], df1$Name). Dies teilt die Daten durch die Spalte Name. Der Rest ist für Aussehen:

setNames(do.call("cbind", c(list(unique(df1$Quality)), (s<-split(df1[-1], df1$Name))[match(unique(df1$Name),names(s))])),c(names(df1)[1],rep(names(df1)[-1], length(unique(df1$Name))))) 
# Quality Data Name Data Name Data Name 
#4  1 345 Blue 500 red 667 white 
#5  2 550 Blue NULL red 647 white 
#6  3 730 Blue 123 red 626 white 
Verwandte Themen