2017-01-26 14 views
0

Ich möchte eine Alterspyramide in R, ähnlich Population pyramid plot with ggplot2 and dplyr (instead of plyr).Alterspyramide in R (mit Gruppendaten)

Das Problem ist, dass meine Daten bereits nach Untergruppen aggregiert sind. So möchte ich nicht die Anzahl des Auftretens des Alters zählen 65, sondern die Summe aller Zahlen, die alt sind, 65

zB:

df = structure(list(number = c(26778, 28388, 23491, 18602, 15787, 
24536), gender = c("F", "M", "F", "M", "F", "M"), age = c(65, 
65, 65, 65, 74, 58)), .Names = c("number", "gender", "age"), row.names = c(142L, 
234L, 243L, 252L, 298L, 356L), class = "data.frame") 

Wie soll ich diesen Code ändern:

library("ggplot2") 
ggplot(data = df, aes(x = age, fill = gender)) + 
    geom_bar(data = subset(df, gender == "M")) + 
    geom_bar(data = subset(df, gender == "F"), 
      mapping = aes(y = - ..count..), 
      position = "identity") + 
    scale_y_continuous(labels = abs) + 
    coord_flip() 

Antwort

2

Sie könnten die Daten vorher zusammenfassen und sie dann auf ggplot passieren wie unten:

df1 <- df %>% group_by(gender,age) %>% summarise(s_age = sum(age)) 

ggplot(data = df1, aes(x = age,y=s_age, fill = gender)) + 
    geom_bar(data = filter(df1, gender == "F"), stat = "identity") + 
    geom_bar(data = filter(df1, gender == "M"), stat="identity", aes(y=-s_age)) + 
    coord_flip() 

enter image description here

Verwandte Themen