2017-05-16 3 views
0

meine Daten sieht wie folgt aus:ggplot mehrere Binärgrößen in Gruppen

groupvar var1 var2 var3 var4 
group1  1  1  0  0 
group1  0  1  1  1 
group3  1  0  1  0 
group4  1  1  0  1 
group4  0  0  0  1 
group2  0  1  1  0 

Ich mag würde eine Ausgabe haben, die wie folgt aussieht:

Some made up data

Ich bin nicht sicher, wie Um dies zu tun, müssen die Daten irgendwie umgestaltet werden? Jede Hilfe wird geschätzt.

EDIT: Ich habe viel Zeit damit verbracht zu suchen, es ist sehr möglich, ich bin schlecht in der Suche, aber wenn Sie mich an der richtigen Stelle statt Downvoting würde soooooo viel besser sein.

Edit2: Ich nicht ganz weiß, wie dput zu verwenden, aber hier ist meine Ausgabe von ihm:

structure(list(groupvar = c("group1", "group1", "group2", "group2", 
"group2", "group3", "group3", "group3", "group1", "group1"), 
var1 = c(0, 0, 1, 0, 0, 0, 1, 1, 1, 1), var2 = c(0, 0, 1, 
1, 0, 1, 1, 1, 0, 1), var3 = c(1, 1, 0, 1, 1, 0, 1, 0, 0, 
0), var4 = c(1, 0, 1, 0, 1, 1, 1, 0, 1, 1)), .Names = c("groupvar", 
"var1", "var2", "var3", "var4"), row.names = c(NA, -10L), class = 
"data.frame") 
+0

Sie haben wahrscheinlich nach unten gestimmt, weil Sie Daten in zu Format zur Verfügung gestellt, die mehr als eine Sekunde dauert zu laden. Bessere Verwendung 'dput' – HubertL

+0

Sie können' reshape2 :: melt' oder 'tidyr :: gather' verwenden, um Ihren Datensatz von weit nach lang zu gestalten, was dann einfach in ggplot2 – HubertL

+0

unter http: //ggplot2.tidyverse grafisch dargestellt werden kann. org/reference/position_dodge.html zum Plotten nach dem Schmelzen. Sieh dir auch diese Frage an http://StackOverflow.com/Questions/17182938/ggplot2-stacking-dodging-bar-chart – ahly

Antwort

1

Ist das, was Sie suchen?

library(tidyverse) 
d <- read_csv("groupvar, var1, var2, var3, var4 
       group1,  1,  1,  0,  0 
       group1,  0,  1,  1,  1 
       group3,  1,  0,  1,  0 
       group4,  1,  1,  0,  1 
       group4,  0,  0,  0,  1 
       group2,  0,  1,  1,  0") 

td <- d %>% 
    gather(var, val, -1) %>% 
    group_by(groupvar, var) %>% 
    summarize(tot = sum(val)) 


ggplot(td, aes(groupvar, tot, fill = var)) + 
    geom_bar(stat = "identity", position = "dodge") 

enter image description here

+0

Genau das ist es! Ich hatte das Gefühl, dass es eine Kombination aus Umformung und Zusammenfassung war, aber ich konnte mir nicht vorstellen, wie genau ich das machen sollte. Vielen Dank! – MokeEire

+0

Großartig! Ich bin froh, dass es hilfreich war! (Vielleicht möchten Sie es als richtig markieren) –

+0

Kann ich fragen, warum das dritte Argument zu sammeln ist -1, und muss ich meine Variablen auf das gleiche Präfix umbenennen, wenn sie nicht ein Präfix wie var teilen? – MokeEire