5.1 Criando Tabelas

5.1.1 Função table

Para criar tabelas o R possui a função table(), incorporado ao seu próprio sistema.

Tabela simples

Por exemplo, vamos começar criando uma tabela que mostre a divisão da variável estado_civil2, por categoria. Utilizamos a função table(), indicando qual coluna queremos visualizar.

table(dados$estado_civil2)
## 
##               solteira(o)                 casada(o) divorciada(o)/separada(o) 
##                       977                      3241                       168 
##                  viúva(o) 
##                        67

Tabela de contingência

Podemos também criar uma tabela de contingência (também chamada de tabela cruzada), cruzando duas variáveis qualitativas. Mais uma vez, utilizamos a função table(), mas dessa vez, com duas variáveis.

#Criando uma tabela cruzada

table(dados$estado_civil2, dados$status) 
##                            
##                              bom ruim
##   solteira(o)                649  328
##   casada(o)                 2412  829
##   divorciada(o)/separada(o)   90   78
##   viúva(o)                    48   19

Podemos também criar uma tabela cruzada com proporções, utilizando a função prop.table() externamente à função table().

#Criando uma tabela cruzada com proporções

prop.table(table(dados$estado_civil2, dados$status)) 
##                            
##                                     bom        ruim
##   solteira(o)               0.145744442 0.073658208
##   casada(o)                 0.541657310 0.186166629
##   divorciada(o)/separada(o) 0.020211094 0.017516281
##   viúva(o)                  0.010779250 0.004266786

5.1.2 Tabelas com o tidyverse

Alguns pacotes do tidyverse como o dplyr, o tdyr e o janitor permitem criar tabelas de maneira eficiente.

library(dplyr)

Tabela de frequência

Como já vimos na Aula 2, o pacote dplyr permite contarmos quantos elementos temos em cada categoria de uma variável, ou seja, uma tabela de frequência!

#Tabela de frequência com o Summarize

dados %>%
  group_by(estado_civil2)  %>% 
  summarize(Frequência=n())  # Contar número de indivíduos em cada categorias
## # A tibble: 4 × 2
##   estado_civil2             Frequência
##   <fct>                          <int>
## 1 solteira(o)                      977
## 2 casada(o)                       3241
## 3 divorciada(o)/separada(o)        168
## 4 viúva(o)                          67

Uma outra forma de criar a mesma tabela seria através da função count(), que permite contar quantos elementos temos em cada categoria.

dados %>%
  count(estado_civil2, name = "Frequência") # Contar número de indivíduos em cada categorias
##               estado_civil2 Frequência
## 1               solteira(o)        977
## 2                 casada(o)       3241
## 3 divorciada(o)/separada(o)        168
## 4                  viúva(o)         67

Para transformar em uma tabela de porcentagem, adicionamos o comando mutate(prop=n/sum(n)*100).

dados %>%
  group_by(estado_civil2)  %>% 
  summarize(n=n()) %>% # Contar número de indivíduos em cada categorias
  mutate(prop=n/sum(n)*100) # Contar proporção
## # A tibble: 4 × 3
##   estado_civil2                 n  prop
##   <fct>                     <int> <dbl>
## 1 solteira(o)                 977 21.9 
## 2 casada(o)                  3241 72.8 
## 3 divorciada(o)/separada(o)   168  3.77
## 4 viúva(o)                     67  1.50

Podemos, ainda, adicionar a idade média de cada grupo

dados %>%
  group_by(estado_civil2)  %>% 
  summarize(n=n(),idade=mean(idade))%>% #adicionar a idade média
  mutate(prop=n/sum(n)*100)
## # A tibble: 4 × 4
##   estado_civil2                 n idade  prop
##   <fct>                     <int> <dbl> <dbl>
## 1 solteira(o)                 977  27.8 21.9 
## 2 casada(o)                  3241  39.6 72.8 
## 3 divorciada(o)/separada(o)   168  38.2  3.77
## 4 viúva(o)                     67  48.8  1.50

Tabela de contingência

Para fazermos uma tabela de contingência, ou tabela cruzada, podemos utilizar os pacotes tidyr ou o pacote janitor.

Pacote tidyr

utilizamos três comandos principais:

-count: conta o número de ocorrências únicas de combinações das variáveis especificadas -spread: A função spread() do pacote tidyr é usada para converter dados de formato longo (long) para formato largo (wide). Especificamos a coluna status como chave (key), os valores da coluna n como valores a serem distribuídos nas novas colunas, e fill = 0 para preencher com zeros onde não houver dados.

#Chamar o tidyr
library(tidyr)

#Criar tabela de contingência de Estado Civil x Status
dados %>%
  count(estado_civil2, status) %>%
  spread(key = status, value = n, fill = 0)

Pacote janitor

Para fazer uma tabela de contingência podemos também utilizar a função tabyl() do pacote janitor. Em tabyl colocamos o nome das duas variáveis que queremos visualizar como tabela.

#Chamar o janitor
library(janitor)

#Criar tabela de contingência de Estado Civil x Status
dados %>% 
  tabyl(estado_civil, status)
##   estado_civil  bom ruim
##      casada(o) 2412  829
##  divorciada(o)   24   14
##    separada(o)   66   64
##    solteira(o)  649  328
##       viúva(o)   48   19

A função adorn_percentages() adiciona as porcentagens e adorn_rounding arredonda os valores

#Criar tabela de contingência de Estado Civil x Status
dados %>% 
  tabyl(estado_civil, status)%>%
adorn_percentages()%>% #Chamar porcentagens
  adorn_rounding(digits=2) #Arredondar para 2 dígitos
##   estado_civil  bom ruim
##      casada(o) 0.74 0.26
##  divorciada(o) 0.63 0.37
##    separada(o) 0.51 0.49
##    solteira(o) 0.66 0.34
##       viúva(o) 0.72 0.28