2016-07-31 12 views
0

Ich suchte überall nach einer Antwort, aber ich konnte für dieses Problem einfach keinen finden (vielleicht war ich einfach zu blöd um andere Antworten zu verwenden, weil ich neu bin zu R).Ein ggplot aus zwei Datenrahmen (je 1 bar)

Ich habe zwei Datenrahmen mit unterschiedlicher Anzahl von Zeilen. Ich möchte ein Diagramm erstellen, das einen einzelnen Balken pro Datenrahmen enthält. Beide sollten die gleiche Länge haben und die Anzahl der verschiedenen Variablen sollte übereinander gestapelt werden. Zum Beispiel: Ich möchte die Proportionen von Geschlecht in diesen mit Datensätzen vergleichen.

t1<-data.frame(cbind(c(1:6), factor(c(1,2,2,1,2,2)))) t2<-data.frame(cbind(c(1:4), factor(c(1,2,2,1))))

1 darstellt, männlich, 2 weiblich repräsentiert I zwei barplots erstellen möchten nebeneinander, die repräsentieren, dass die Anteile von Geschlecht in den ersten Datenrahmen von 2: 4 und im zweiten 2 : 2.

Mein Versuch sah wie folgt aus:

ggplot() + geom_bar(aes(1, t1$X2, position = "fill")) + geom_bar(aes(1, t2$X2, position = "fill"))

, der diesem Fehler führt: "Fehler:. Stat_count() darf nicht mit einer y Ästhetik verwendet werden"

+1

Bitte dies lesen http://stackoverflow.com/help/mcve und Ihre Frage entsprechend bearbeiten. Sie können Ihr Datum mit der Funktion 'dput' angeben, um Ihr Problem reproduzierbar zu machen. – Alex

Antwort

1

Zuerst sollte ich die beiden Datenrahmen zusammenführen. Sie müssen eine Variable hinzufügen, die den Ursprung der Daten identifiziert, und in beiden Datenfeldern eine Spalte mit einer ID (wie t1 und t2) hinzufügen. Denken Sie daran, dass Ihre Spaltennamen in beiden Frames gleich sind, so dass Sie die Funktion rbind verwenden können.

t1$data <- "t1" 
t2$data <- "t2" 
t <- (rbind(t1,t2)) 

Jetzt können Sie die Handlung machen:

ggplot(t[order(t$X2),], aes(data, X2, fill=factor(X2))) +   
geom_bar(stat="identity", position="stack")