2017-01-26 3 views
0

Chers membres Stackoverflow,ggplot, barplot avec barre d'erreur: deux colonnes binaires et catégorique

J'ai un ensemble de données comprenant les éléments suivants: une colonne contenant lang cinq langues différentes. deux autres colonnes CAN et INT contenant soit (0, 1). Vous pouvez voir les données here

Je voudrais tracer deux barres par langue, une pour CAN== 0 et l'autre pour CAN==1. L'axe des y doit être le nombre de lignes INT (ou INT==1). Je voudrais que ces barres aient une barre d'erreur sur eux. Certains post suggéré d'utiliser melt() afin de convertir le format à un long. Cependant, cela ne fonctionne pas puisque mes données sont continues.

+0

Vous pouvez vérifier ces liens http: // stackoverflow. com/questions/15064462/r-ggplot2-barplot-et-erreur-bar https://www.youtube.com/watch?v=N4d-qUTTY44 – aelwan

+0

@AliAlshehri, OK, pas plus de distractions ici. J'ai mis à jour ma réponse - j'espère que cela répondra à vos besoins. De plus, pour les questions à venir, veuillez consulter les conseils sur la façon d'afficher une question reproductible, puis l'aide viendra plus rapidement et plus vraisemblablement. – user127649

+0

@ user127649 c'est parfait. Merci beaucoup. il y a une petite préoccupation, qui est la mesure de l'axe des y, que j'ai du mal à interpréter dans le graphique produit. À l'origine, je voulais que cela représente les chiffres ou (mieux) le pourcentage d'essais. – Aloush87

Répondre

1

Mise à jour

J'ai regardé stat_summary hier soir, et peut-être que cela fonctionne, mais je ne pouvais pas le faire. Donc, je pense toujours geom_errorbar est le chemin à parcourir, comme d'abord suggéré.

D'abord, pour calculer le CI j'ai écrit une fonction. Il y en a peut-être une intégrée, mais je ne le sais pas.

BinCI <- function(x) { 
    p <- mean(x) 
    s <- sqrt(p * (1 - p)/length(x)) 
    i <- s * 2 
    i 
} 

Deuxièmement, la manipulation des données:

df2 <- unite(df, uLang, c(Lang, CAN), remove = FALSE) %>% # Create the groups 
    group_by(Lang, uLang) %>% 
    summarize(prop = mean(INT), ci = BinCI(INT)) # Calculate the mean and CI using the `BinCI` function 


Lang uLang  prop   ci 
Ar Ar_0 0.07200000 0.04623972 
Ar Ar_1 0.44406780 0.05785682 
Kic Kic_0 0.16000000 0.06558048 
Kic Kic_1 0.44745763 0.05789989 
Sp Sp_0 0.04968944 0.03425168 
Sp Sp_1 0.24390244 0.04742311 
Yuc Yuc_0 0.16800000 0.06687923 
Yuc Yuc_1 0.40780142 0.05852797 
Zap Zap_0 0.15151515 0.06241559 
Zap Zap_1 0.26785714 0.04831810 

Troisièmement, la parcelle:

ggplot(df2, aes(uLang, prop, fill = Lang)) + 
    geom_col() + 
    geom_errorbar(aes(ymin = prop - ci, ymax = prop + ci), width = 0.3) + 
    guides(fill = FALSE) 

enter image description here

+0

Merci @ user127649. c'est exactement ce que je cherchais. Maintenant, je voudrais ajouter des barres d'erreur? – Aloush87

+1

Salut @AliAlshehri, je ne sais pas de quel type de barres d'erreur vous avez besoin? Si vous pouvez calculer le type que vous voulez, et les mettre dans une base de données, vous pouvez les ajouter en utilisant ce 'geom_errorbar (aes (ymin =?, Ymax =?), Width = 0.2) '. Malheureusement, j'ai terminé pour ce soir, mais je serai de retour demain soir – user127649

+0

Merci. Voici ce que je recherchais dans SPSS [https://docs.google.com/document/d/1mBmueQ07fTda6ev_6hc48gMGu1AJOE7kvIjmNITipIE/edit]. – Aloush87