2017-05-05 5 views
1

Ich arbeite auf einem Daten und ich habe 2 Variablen wie denen man:Wie spezifiziert man Klassenlänge in ggplot Histogrammen?

AgeC  NbSin2003(NbClaim) 
[39.5,47.5)  0 
[39.5,47.5)  1 
[51.5,58.5)  0 
[20,27.5)  0 
[39.5,47.5)  0 
[27.5,33.5)  0 
[51.5,58.5)  0 
[39.5,47.5)  1 
[36.5,39.5)  0 
[39.5,47.5)  1 
[39.5,47.5)  0 
[20,27.5)  0 
[39.5,47.5)  0 
[51.5,58.5)  0 
[51.5,58.5)  0 
[51.5,58.5)  0 
[27.5,33.5)  0 
[58.5,69)  0 

Jetzt ggplot ich mit ein Histogramm mit NbSin2003 in fonction von AGEC und in jeder Klasse von AGEC haben möchte ich den Durchschnitt erhalten möchten von NbSin2003 entsprechenden Werten.

Beispiel:

Wenn wir die Klasse [39.5,47.5) für AGEC nehmen, haben wir:

AgeC  NbSin2003 
[39.5,47.5)  0 
[39.5,47.5)  1 
[39.5,47.5) 0 
[39.5,47.5) 1 
[39.5,47.5) 1 
[39.5,47.5) 0 
[39.5,47.5) 0 

Für diese Klasse die Balken des Histogramms Willen Länge (0+ 1 + 0 + 1 + 1 + 0 + 0) /7=0.42

ich es mit BarPlot und xtabs wie das zu tun gelungen: barplot(xtabs(NbSin2003/sum(NbSin2003)~AgeC,data))

Aber ich möchte ggplot verwenden, um eine bessere Qualität des Histogramms zu erhalten, und ich habe alle meine Grafiken damit gemacht.

Danke euch allen!

Antwort

1

Nicht sicher, dass ich Ihre Frage verstehe. Die Lösung, die Sie mit barplot bereitstellen, erfüllt nicht das, was Sie sagen möchten ... (es gibt "1" für die Stufe "[39.5,47.5)" zurück, nicht wie vorgeschlagen von 0.42).

Angenommen, Sie möchten die Höhe des Balkens den Durchschnitt der einzelnen Level repräsentieren in Ihrem „AGEC“ -Faktor, hier ist ein Weg, es zu tun:

library (dplyr) 
data %>% 
    group_by(AgeC) %>% 
    summarise(avg = sum(NbSin2003)/n()) %>% 
    ggplot(aes(x = AgeC, y = avg)) + geom_bar(stat = "identity") 

Die ersten beiden Anrufe Gruppen von Ebene in der "AgeC" -Faktor, berechnet dann den Durchschnitt jedes Levels (wie Sie es in Ihrem Beispiel getan haben). Die resultierenden Daten werden dann in ggplot weitergeleitet.

+0

Oder nur 'gemein (NbSin2003)'. Sie können auch 'geom_col()' anstelle von 'geom_bar (stat =" identity ") verwenden. – Axeman

+0

@Axeman hat absolut Recht! Danke, dass du darauf hingewiesen hast. – wibom

Verwandte Themen