2017-10-21 210 views
0

Je voudrais faire un diagramme à barres proportionnel empilé représentant la prévalence du diabète dans une cohorte d'individus résidant dans les villes A, B et C. I J'aimerais aussi que l'intrigue comporte une barre représentant toute la cohorte. Je suis satisfait de l'intrigue ci-dessous, mais j'aimerais savoir s'il y a un moyen d'incorporer l'étape de pré-traitement dans l'étape de traitement, c'est-à-dire avec pippl()?ggplot2() Diagramme à barres et dplyr() regroupés et données globales dans R

Merci!

Point de départ (df):

dfa <- data.frame(town=c("A","A","A","B","B","C","C","C","C","C"),diabetes=c("y","y","n","n","y","n","y","n","n","y"),heartdisease=c("n","y","y","n","y","y","n","n","n","y")) 

Pré-traitement:

dfb <- rbind(dfa, transform(dfa, town = "ALL")) 

Traitement et terrain:

library(dplyr) 
library(ggplot) 

dfc <- dfb %>% 
group_by(town) %>% 
count(diabetes) %>% 
mutate(prop = n/sum(n)) 

ggplot(dfc, aes(x = town, y = prop, fill = diabetes)) + 
geom_bar(stat = "identity") + 
coord_flip() 

Répondre

2

Comme ceci:

dfc <- dfa %>% 
    bind_rows(dfa %>% 
       mutate(town = "ALL")) %>% 
    group_by(town) %>% 
    count(diabetes) %>% 
    mutate(prop = n/sum(n)) %>% 
    ggplot(aes(x = town, y = prop, fill = diabetes)) + 
    geom_bar(stat = "identity") + 
    coord_flip() 

EDIT: ajouté pré-traitement en pipeline à l'aide bind_rows et mutate au lieu de rbind et transform

+0

Désolé pour ne pas être très clair, je voulais dire comment intégrer ce qui se passe dans dfb <- rbind (DFA, transformer (DFA, town = "ALL")) en dfc <- dfb %>% group_by (ville)%>% count (diabète)%>% mute (prop = n/sum (n)). – LLL

+0

J'ai changé la réponse pour inclure les étapes de pré-traitement dans le pipeline – tbradley