visualizar um gráfico de caixa horizontal em R

8

Eu tenho um conjunto de dados como este. Os dados foram coletados através de um questionário e eu vou fazer algumas análises exploratórias.

windows <- c("yes", "no","yes","yes","no")
sql     <- c("no","yes","no","no","no")
excel  <- c("yes","yes","yes","no","yes")
salary <- c(100,200,300,400,500 )

test<- as.data.frame (cbind(windows,sql,excel,salary),stringsAsFactors=TRUE)
test[,"salary"] <- as.numeric(as.character(test[,"salary"] ))

Eu tenho uma variável de resultado (salário) no meu conjunto de dados e algumas variáveis ​​de entrada (ferramentas). Como posso visualizar um gráfico de caixa horizontal como este: insira a descrição da imagem aqui

Hamideh
fonte

Respostas:

3

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 testque 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 meltfunção / método do reshapepacote 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 testque 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:

No painel esquerdo, mostra as contagens de como diferentes softwares estão sendo usados, representados através de gráficos de barras e, no painel direito, mostra a distribuição de salários agrupados por software usado representado através de gráficos de caixas.

Nitesh
fonte
2

Você precisará criar uma coluna que contenha informações do software - por exemplo, nomeie o software e a coluna salário terá o salário correspondente, para algo como

 Software   Salary
 Microsoft  100
 Microsoft  300
 Microsoft  400
 SQL        200

e assim por diante ... então você pode plotar com o código abaixo

p <- ggplot(test, aes(factor(software), salary))
p + geom_boxplot() + coord_flip()
Lauren Goodwin
fonte
Bom, mas como posso criar uma coluna de software?
Hamideh
Isso é algo que você terá que pesquisar por si mesmo. Não sei como é o seu conjunto de dados - a função de fusão pode ser útil para você.
Lauren Goodwin
@LaurenGoodwin Minha resposta a esta pergunta usa gridExtra para plotar um gráfico de barras e boxplot lado a lado para produzir a visualização solicitada.
Nitesh