2010-06-21 12 views
0

Je dois faire un rapport d'une enquête où nous avons une question comme celle-ci (toutes les réponses sont des cases à cocher).Barplot visualisant les cases à cocher

What is you favorite cake(s) (please choose more than one): 
[] Tiramisù 
[] Carrot Cake 
[] Cupcake 

Ensuite, les exportations de logiciels d'enquête en CSV comme celui-ci:

"username","likes_tiramisu","likes_carrotcake","likes_cupcake" 
"test01",1,1,1 
"test02",0,1,1 
"test03",0,1,0 
"test04",0,0,1 

je voudrais faire un barplot où chaque histogramme représente la fréquence de chaque gâteau. Comment puis-je combiner une table comme ceci:

"likes_tiramisu" "likes_carrotcake" "likes_cupcake" 
       1     3    3 

ce que je pourrais résoudre simplement avec la somme de tous les éléments de chaque colonne? Est-il conceptuellement valide?

+2

'Je voudrais faire un barplot où chaque histogr Je représente la fréquence de chaque gâteau. »Peut-être que vous vouliez dire« ... où chaque * bin * représente la fréquence ... »? – aL3xa

+0

Oui, désolé ... Je voulais dire chaque poubelle. –

Répondre

3

Supposons que vos données dans le fichier: survey.csv

Ensuite, pour créer une barplot utiliser les commandes suivantes:

#Read in the data 
d = read.table("survey.csv", sep=",", header=TRUE) 

#Need to skip the username column, so d[,2:4] 
#Use apply to calculate the totals in your table 
barplot(apply(d[,2:4], 2, sum)) 

HTH

+0

Colin, merci pour le pourboire !! J'ai un petit problème parce que dans les colonnes j'ai aussi NA. Y a-t-il une commande pour traiter NA comme 0? –

+0

Ok je l'ai trouvé: barplot (applique (d [, 2: 4], 2, somme, na.rm = TRUE)) J'aime R de plus en plus –

+0

Il y a une fonction dédiée pour additionner des colonnes - 'colSums'. Vous pouvez utiliser 'colSums (d [, 2: 4])' ou 'colSums (d [2: 4])' et 'NA' supprimer' colSums (d [, 2: 4], na.rm = TRUE) 'ou' colSums (d [2: 4], na.rm = TRUE) '. – Marek

2

Une approche ggplot2 ressemblerait à ceci:

library(ggplot2) 

data.melt <- melt(data, id = "username") 
qplot(variable, value, data = data.melt, geom = "bar", stat = "identity") 
+0

Je ne connaissais pas la commande melt dans ggplot2. Ça a l'air assez puissant! Merci beaucoup pour cet exemple –

+0

melt() est en fait issu du paquet reshape, qui est chargé par ggplot2. – JoFrhwld

+0

avec des versions plus récentes de 'ggplot2' vous devez charger' reshape' ou 'reshape2' explicitement plutôt que de vous fier à' ggplot2' pour le faire automatiquement. –