Comencemos creando un conjunto de datos falso.
software = sample(c("Windows","Linux","Mac"), n=100, replace=T)
salary = runif(n=100,min=1,max=100)
test = data.frame(software, salary)
Esto debería crear un marco de datos test
que se verá algo así como:
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
EDITAR basado en el comentario Tenga en cuenta que si los datos aún no existen en el formato anterior, se pueden cambiar a este formato. Tomemos un marco de datos proporcionado en la pregunta original y supongamos que se llama al marco de datos 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
Ahora, usando la melt
función / método del reshape
paquete R
, primero cree el marco de datos test
(que se usará para el trazado final) de la siguiente manera:
# 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"
Ahora, obtendrá un marco de datos test
que se ve así:
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
Habiendo creado el conjunto de datos. Ahora generaremos la trama.
Primero, cree el diagrama de barras a la izquierda basado en los recuentos de software que representa la tasa de uso.
p1 <- ggplot(test, aes(factor(software))) + geom_bar() + coord_flip()
A continuación, cree el diagrama de caja a la derecha.
p2 <- ggplot(test, aes(factor(software), salary)) + geom_boxplot() + coord_flip()
Finalmente, coloque ambas parcelas una al lado de la otra.
require('gridExtra')
grid.arrange(p1,p2,nrow=1)
Esto debería crear una trama como: