2012-10-11 18 views
5

Ich bin neu in R und ggplot2. Ich habe eine CSV-Datei mit Getränkeverbrauchsdaten. Die erste Spalte ist das Jahr, und die nächsten 9 Spalten sind Getränketypen wie Kaffee, Tee, Limonade usw. mit Werten für den Verbrauchsbetrag für den Jahreswert dieser Zeile. Die Daten umfassen einen Zeitraum von 41 Jahren. Ich habe das erforscht und viele Dinge versucht. Mit ggplot kann ich ganz einfach ein Punktdiagramm für jede Art von Getränk erstellen.Restrukturieren CSV-Daten für r und ggplot2

Ich möchte jedoch horizontale gestapelte Punktdiagramme mit Jahr auf der x-Achse für jedes Diagramm erstellen. Also, es würde eine Handlung für Kaffee geben, und dann direkt darunter, eine für Tee usw. Ich denke, ich möchte Facetten benutzen. Ich denke auch, dass ich meine Daten umstrukturieren möchte, so dass sie drei Spalten hat: eine für das Jahr, eine für "Kategorie" (d. H. Kaffee, Tee, Soda, usw.) und die letzte für den Wert. Ich denke, sobald ich die Daten in dieser Form bekomme, sollte die Verwendung von Facetting einfach sein.

Problem ist, ich kann nicht scheinen, herauszufinden, wie man meine Daten in dieser Form erhält. Hier sehen Sie, wie die ersten Zeilen der Daten aussehen:

Year Whole Milk Other Milk Total Milk Tea Coffee Diet Soda Regular Soda Total Soda Juice 
1970 25.5 5.8 31.3 6.8 33.4 2.1 22.2 24.3 5.5 
1971 25 6.3 31.3 7.2 32.2 2.2 23.3 25.5 5.8 
1972 24.1 6.9 31 7.3 33.6 2.3 23.9 26.2 6 

Kann mir jemand helfen?

dput der Daten:

structure(list(Year = 1970:1972, `Whole Milk` = c(25.5, 25, 24.1 
), `Other Milk` = c(5.8, 6.3, 6.9), `Total Milk` = c(31.3, 31.3, 
31), Tea = c(6.8, 7.2, 7.3), Coffee = c(33.4, 32.2, 33.6), `Diet Soda` = c(2.1, 
2.2, 2.3), `Regular Soda` = c(22.2, 23.3, 23.9), `Total Soda` = c(24.3, 
25.5, 26.2), Juice = c(5.5, 5.8, 6)), .Names = c("Year", "Whole Milk", 
"Other Milk", "Total Milk", "Tea", "Coffee", "Diet Soda", "Regular Soda", 
"Total Soda", "Juice"), class = "data.frame", row.names = c(NA, 
-3L)) 
+0

dput ist neu für mich. Ich habe gerade nachgesehen und versucht, es zu benutzen, aber ich verstehe es nicht. Ich habe eine Datei, sagen wir "myTestFile.csv". Ich habe versucht: dput (x, file = 'myTestFile.csv'), und habe eine Fehlermeldung erhalten. Sie haben nicht alle Daten manuell eingegeben, oder? Können Sie mir helfen zu verstehen, was Sie getan haben, und wie würde ich dput mit einer CSV-Datei verwenden? – user1739283

+0

Wenn Sie eine Variable haben, x, können Sie dput (x) und es bietet Ihnen eine Möglichkeit, x einfach auf eine andere Variable zu transportieren. Versuchen Sie es in R, kopieren Sie und fügen Sie 'Struktur (liste ....' 'dann Typ' x <- PASTE 'dann' str (x) '. –

Antwort

6

ich ein kleines Wort, das ich oft für ggplot2 verwenden: „Wenn Sie Zweifel haben, schmelzen“. Im reshape-Paket gibt es eine Funktion melt(), die genau das tut.

tmp <- structure(list(Year = 1970:1972, `Whole Milk` = c(25.5, 25, 24.1 
), `Other Milk` = c(5.8, 6.3, 6.9), `Total Milk` = c(31.3, 31.3, 
31), Tea = c(6.8, 7.2, 7.3), Coffee = c(33.4, 32.2, 33.6), `Diet Soda` = c(2.1, 
2.2, 2.3), `Regular Soda` = c(22.2, 23.3, 23.9), `Total Soda` = c(24.3, 
25.5, 26.2), Juice = c(5.5, 5.8, 6)), .Names = c("Year", "Whole Milk", 
"Other Milk", "Total Milk", "Tea", "Coffee", "Diet Soda", "Regular Soda", 
"Total Soda", "Juice"), class = "data.frame", row.names = c(NA, 
-3L)) 

library(reshape) 

melt(tmp, id.vars="Year") 

Year  variable value 
1 1970 Whole Milk 25.5 
2 1971 Whole Milk 25.0 
3 1972 Whole Milk 24.1 
4 1970 Other Milk 5.8 
5 1971 Other Milk 6.3 
6 1972 Other Milk 6.9 
7 1970 Total Milk 31.3 
8 1971 Total Milk 31.3 
9 1972 Total Milk 31.0 
10 1970   Tea 6.8 
11 1971   Tea 7.2 
12 1972   Tea 7.3 
13 1970  Coffee 33.4 
... 
+1

+1 für" wenn im Zweifel schmelzen ", was meine Erfahrung auch ist – SlowLearner

Verwandte Themen