2017-05-13 1 views
0

den nächsten Code und Datenrahmen Gegeben:Plotten Variable bedeutet für jede Ebene der unabhängigen Variablen. R

require(data.table) 
require(ggplot2) 

dat1 <- fread('J S1 S2 S3 S4 Z 
       1 4 5 3 2 0 
       1 6 5 6 5 1 
       2 3 5 8 9 0 
       2 12 11 34 44 1 
       3 11 23 23 22 0 
       3 12 15 22 21 1') 

temp <- melt(dat1, id.vars = c("J", "Z")) 

ggplot(temp, aes(x = J, y = value, color = variable, shape = as.factor(Z))) + 
    geom_point() 

ich in der gleichen Kurve, die die Mittel der Werte (S1, S2, S3, S4) für jede Ebene von J. Ich meine plotten mag, für S1, bekomme 3 Punkte in meinem Graph: 5.5, 7.5, 11.5. Für S2, weitere 3 Punkte, und so weiter ...

Ich versuche dies:

ggplot(temp, aes(x = J, y = mean(value), color = variable, shape = as.factor(Z))) + 
     geom_point() 

Plot

erhalte ich nur einen Punkt für jeden vollständigen Satz von Daten. Aber ich möchte in den gleichen Graphen den Mittelwert von S1 für jede Stufe von J (1,2,3), den Mittelwert von S2 für jede Stufe von J, den Mittelwert von S3 für jede Stufe von J und die Mittelwert von S4 für jede Ebene von J.

Antwort

1

Sie müssen Zeilen für Mittelwert in Ihren Daten hinzufügen.

Bitte lassen Sie mich wissen, ob dies sinnvoll ist oder Sie etwas anderes haben möchten.

können Sie tun:

library(data.table) 

temp1 <- setDT(temp)[,.(value = mean(value)),by=.(J,variable)] 
ggplot(temp1, aes(x = J, y = value, color=factor(variable))) + 
    geom_point() 

enter image description here

ODER Sie tun können:

ggplot(temp1, aes(x = variable, y = value, color=factor(J))) + 
    geom_point() 

EDIT nach OP Wunsch:

Z Variable Rechnung zu erhalten , du musst das d zusammenfassen ata Basis Z als auch unten wie und dann Plot:

temp1 <- setDT(temp)[,.(value = mean(value)),by=.(J,variable,Z)] 

ggplot(temp1, aes(x = variable, y = value, color=factor(J),shape=factor(Z))) + 
    geom_point() 

Jetzt die Handlung enthält drei kategorische Variablen „Variable“, „J“ und „Z“, können Sie mit ihnen spielen, indem sie Schalt austauschbar zu sehen, was passt zu deinem Bedarf, vergiss nicht, factor() vor ihnen zu verwenden, falls du Form und Farbe in der Ästhetik verwenden willst. Wenn Sie ein Diagramm für 0s und 1s separat zeichnen möchten, dann müssen Sie facet_wrap verwenden, wie unten:

ggplot(temp1, aes(x = variable, y = value, color=factor(J),shape=factor(Z))) + 
    geom_point() + facet_wrap(~Z) 
+0

Danke für Ihre Antwort. Es hilft. Allerdings habe ich versucht, besser zu erklären, was ich in meiner Handlung bekommen möchte. Ich möchte nicht drei Ebenen von Z. Ich möchte die Mittel von S1, S2, S3, S4 für jede Ebene von J. – pyring

+0

@pyring aktualisiert die Antwort – PKumar

+0

danke! Das ist viel ähnlicher als das, was ich will. Aber ich weiß nicht, warum ich einen Fehler habe, wenn ich temp1 <- temp [,. (Value = mean (value)), von =. (Jugador, variable)] Fehler in '[.data.frame' (temp,, (Wert = Mittelwert (Wert)), durch =. (Jugador,: Unbenutztes Argument (von =. (Jugador, Variable)) – pyring

Verwandte Themen