Commençons par créer un faux ensemble de données.
software = sample(c("Windows","Linux","Mac"), n=100, replace=T)
salary = runif(n=100,min=1,max=100)
test = data.frame(software, salary)
Cela devrait créer une trame de données test
qui ressemblera un peu à:
software salary
1 Windows 96.697217
2 Linux 29.770905
3 Windows 94.249612
4 Mac 71.188701
5 Linux 94.028326
6 Linux 7.482632
7 Mac 98.841689
8 Mac 81.152623
9 Windows 54.073761
10 Windows 1.707829
EDIT basé sur un commentaire Notez que si les données n'existent pas déjà dans le format ci-dessus, elles peuvent être modifiées dans ce format. Prenons un bloc de données fourni dans la question d'origine et supposons que le bloc de données est appelé raw_test
.
windows sql excel salary
1 yes no yes 100
2 no yes yes 200
3 yes no yes 300
4 yes no no 400
5 no no yes 500
Maintenant, en utilisant la melt
fonction / méthode du reshape
package dans R
, créez d'abord le cadre de données test
(qui sera utilisé pour le traçage final) comme suit:
# use melt to convert from wide to long format
test = melt(raw_test,id.vars=c("salary"))
# subset to only select where value is "yes"
test = subset(test, value == 'yes')
# replace column name from "variable" to "software"
names(test)[2] = "software"
Maintenant, vous obtiendrez un datframe test
qui ressemble à:
salary software value
1 100 windows yes
3 300 windows yes
4 400 windows yes
7 200 sql yes
11 100 excel yes
12 200 excel yes
13 300 excel yes
15 500 excel yes
Après avoir créé l'ensemble de données. Nous allons maintenant générer l'intrigue.
Tout d'abord, créez le graphique à barres sur la gauche en fonction du nombre de logiciels représentant le taux d'utilisation.
p1 <- ggplot(test, aes(factor(software))) + geom_bar() + coord_flip()
Ensuite, créez le boxplot sur la droite.
p2 <- ggplot(test, aes(factor(software), salary)) + geom_boxplot() + coord_flip()
Enfin, placez ces deux parcelles côte à côte.
require('gridExtra')
grid.arrange(p1,p2,nrow=1)
Cela devrait créer un tracé comme: