2017-11-16 14 views
2

Picture of how I want the graph to lookGraph kategorische Variable in R

I einen Datensatz mit den folgenden 3 Variablen:

  1. Zustand, kategorischen mit 3 Ebenen: Kontrolle, Augen, Kamera
  2. mean_destruction, kontinuierlich, Werte reichen zwischen 0-10, n = 120
  3. mean_expectation, kontinuierlichen Bereich zwischen 0-10, n = 120

Zum Beispiel:

df1 <- data.frame(Condition = c(rep('Control', 40), rep('Eyes', 40), rep('Camera', 40)), 
       mean_destruction = sample(0:10, 120, replace = T), 
       mean_expectation = sample(0:10, 120, replace = T)) 

Ich versuche, diese 2 und andernfalls in ggplot grafisch darzustellen. Hier ist eine meiner vielen ahem Anstrengungen auf das Bild unten zu reproduzieren:

ggplot(data=df1, aes(x= Condition, y=(mean.destruction), fill=(mean.expected)) + 
    geom_bar(stat="identity", position=position_dodge(), colour="black"))) 

enter image description here

+0

Beachten Sie den Link oben zu einem Bild von dem, was ich eigentlich erreichen möchte - und hätte Stunden damit machen können, wenn wir noch alles von Hand machen würden! –

Antwort

1

Hier ist eine Antwort, die dplyr und tidyr verwendet.

Hier ist, wie ich Ihre Daten bin Interpretation:

set.seed(2112) 

df1 <- data.frame(Condition = c(rep('Control', 40), rep('Eyes', 40), rep('Camera', 40)), 
       mean_destruction = sample(0:10, 120, replace = T), 
       mean_expectation = sample(0:10, 120, replace = T)) 

Sie werden Ihre Daten in lange verwandeln müssen, so dass Sie verschiedene Bars für destruction und expectation bekommen:

library(ggplot2) 
library(dplyr) 
library(tidyr) 

df1 <- df1 %>% 
     gather(mean_destruction, mean_expectation, key = mean_type, value = value) %>% 
     group_by(Condition, mean_type) %>% 
     summarize(mean = mean(value)) 

> df1 
Source: local data frame [6 x 3] 
Groups: Condition [?] 

    Condition  mean_type mean 
    (fctr)   (chr) (dbl) 
1 Camera mean_destruction 4.90 
2 Camera mean_expectation 5.20 
3 Control mean_destruction 4.85 
4 Control mean_expectation 5.30 
5  Eyes mean_destruction 4.40 
6  Eyes mean_expectation 4.15 

dann Ihre ggplot2 call braucht nur ein wenig zwicken:

enter image description here

+0

Das war phantastisch schnell - danke. R scheint jedoch nicht in der Lage zu sein, die Funktion 'Sammeln' zu finden, ich habe dplyr installiert und aufgerufen. Irgendwelche Gedanken darüber, was los ist? "Fehler in Funktionsliste [[i]] (Wert): Funktion konnte nicht gefunden werden" Sammeln "" –

+0

Verstanden - es ist eine "Tidyr" -Funktion. –

+0

Es tut mir leid zu sagen, ich denke, es könnte einen Fehler in der Code oben - wenn ich es ausführen die Daten kollabiert auf 1 Beobachtung von 1 Variable nach: group_by (Bedingung, mean_type)%>% summieren (Mittelwert = Mittelwert (Wert)) Dies gilt sowohl, wenn ich den Code oben genau wie zur Verfügung gestellt, um zu versuchen, zu replizieren, was Sie getan haben BLT und auch wenn ich versuche, es an meinen Dataframe anzupassen. –

Verwandte Themen