Vamos começar criando um conjunto de dados falso.
software = sample(c("Windows","Linux","Mac"), n=100, replace=T)
salary = runif(n=100,min=1,max=100)
test = data.frame(software, salary)
Isso deve criar um quadro de dados test
que se parecerá com:
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 com base no comentário Observe que, se os dados ainda não existirem no formato acima, eles podem ser alterados para este formato. Vamos pegar um quadro de dados fornecido na pergunta original e vamos assumir que o quadro de dados é chamado 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
Agora, usando a melt
função / método do reshape
pacote R
, crie primeiro o quadro de dados test
(que será usado para a plotagem final) da seguinte maneira:
# 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"
Agora, você receberá um quadro de dados test
que se parece com:
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
Tendo criado o conjunto de dados. Vamos agora gerar o enredo.
Primeiro, crie o gráfico de barras à esquerda com base nas contagens de software que representa a taxa de uso.
p1 <- ggplot(test, aes(factor(software))) + geom_bar() + coord_flip()
Em seguida, crie o boxplot à direita.
p2 <- ggplot(test, aes(factor(software), salary)) + geom_boxplot() + coord_flip()
Por fim, coloque esses dois gráficos um ao lado do outro.
require('gridExtra')
grid.arrange(p1,p2,nrow=1)
Isso deve criar um gráfico como: