2017-03-12 3 views
0

Dies ist meine erste Frage hier. Ich habe vor nach einer Antwort gesucht, aber ich war nicht in der Lage ein befriedigender zu finden - wahrscheinlich, weil ich bin ein absoluter Anfänger mit R.Stacked Barplot in R mit ggplot und einer Matrix einer Likert-Skala

Ich habe folgende Daten:

 pbw1 pbw2 pbw3 pbw4 pbw5 pbw6 
[1,] 2 3 2 1 0 2 3 
[2,] 2 1 1 3 4 5 6 

PBW ist eine Variable, die auf einer Likert-Skala beantwortet wurde. Dieser Datensatz enthält 1014 Zeilen. Dies ist also nur ein Beispiel.

Was ich brauche, ist eine Figur, die so aussieht:

Example

Für meine Dataset bedeutet dies: 6 Artikel (Ich mag würde GT mit einem Satz am Ende ersetzen) auf der x -Achse und daher 6 Balken. Diese sollten zeigen, wie viele Personen des n = 1014 (in Prozent) den Artikel beantwortet haben. Wie, 80% haben mit 0 geantwortet, 10% antworteten mit 1, 5% antworteten mit 5%, etc. Dies sollte offensichtlich kumulativ sein.

Alles was ich lese ist ggplot, schmelzen, und so weiter. Trotzdem kann ich R nicht dazu bringen, das zu tun, was ich will und brauche.

Dies hat nicht geholfen:

datm = melt(cbind(pbwmatrix, ind=rownames(pbwmatrix)), id.vars=c('ind'))

Auch BarPlot (pbwmatrix) tat es nicht; auch einige dumme Kombinationen von zufälligen Befehlen nicht (ja, ich bin verzweifelt).

Hilfe in irgendeiner Weise würde sehr geschätzt werden!

Antwort

1

Hier ist ein Starter mit ggplot:

df <- as.data.frame(replicate(6, sample(1:6,100,T))) 
library(tidyverse) 
df %>% 
    gather %>% 
    group_by(key, value) %>% 
    tally %>% 
    mutate(n = n/sum(n)*100) %>% 
    ggplot(aes(x=key, y=n, fill=as.factor(value))) + 
    geom_col() + 
    geom_text(aes(label=n), position=position_stack(.5)) + 
    coord_flip() 
+0

Vielen Dank! Das ist riesig! Ich werde versuchen, es an meine Variablen anzupassen! – nagapilota