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.
##
## 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.
##
## 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().
##
## 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.
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