Beginnen wir mit der Erstellung eines gefälschten Datensatzes.
software = sample(c("Windows","Linux","Mac"), n=100, replace=T)
salary = runif(n=100,min=1,max=100)
test = data.frame(software, salary)
Dadurch sollte ein Datenrahmen erstellt werden test
, der ungefähr so aussieht:
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
BEARBEITEN basierend auf Kommentar Beachten Sie, dass die Daten, wenn sie nicht bereits im obigen Format vorhanden sind, in dieses Format geändert werden können. Nehmen wir einen Datenrahmen, der in der ursprünglichen Frage bereitgestellt wurde, und nehmen wir an, dass der Datenrahmen aufgerufen wird 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
Erstellen Sie nun mit der melt
Funktion / Methode aus dem reshape
Paket in R
zunächst den Datenrahmen test
(der für das endgültige Plotten verwendet wird) wie folgt:
# 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"
Jetzt erhalten Sie einen Datenrahmen test
, der wie folgt aussieht:
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
Nachdem Sie den Datensatz erstellt haben. Wir werden jetzt die Handlung erzeugen.
Erstellen Sie zunächst das Balkendiagramm auf der linken Seite basierend auf der Anzahl der Software, die die Nutzungsrate darstellt.
p1 <- ggplot(test, aes(factor(software))) + geom_bar() + coord_flip()
Erstellen Sie als Nächstes das Boxplot rechts.
p2 <- ggplot(test, aes(factor(software), salary)) + geom_boxplot() + coord_flip()
Zum Schluss platzieren Sie diese beiden Diagramme nebeneinander.
require('gridExtra')
grid.arrange(p1,p2,nrow=1)
Dies sollte eine Handlung wie folgt erstellen: