Conheça o pacote {skimr}

Uma ótima ferramenta para usar em suas análises exploratórias
tutoriais
Author

Tereza

Published

May 5, 2022

Você já conhece o skimr?

O skimr é um pacote que nos fornece medidas resumo de variáveis de uma base de dados de interesse. Ele pode ser visto como uma alternativa mais completa para a função summary() do R Base.

Além de incluir algumas informações a mais sobre cada coluna (como número de missings, por exemplo), ele lida com todos os tipos de dados, não só numéricos, fornecendo um conjunto diferente de medidas resumo a depender do tipo da coluna.

Gostou? Vamos dar uma olhada em como ele funciona!

skimr

Primeiramente, vamos instalar e carregar o pacote skimr

install.packages("skimr")
library(skimr)

Agora, vamos aplicar a função skim em uma base de dados de interesse. No caso, estamos usando a base dados_starwars do pacote dados

dados::dados_starwars |> skim()
Data summary
Name dados::dados_starwars
Number of rows 87
Number of columns 14
_______________________
Column type frequency:
character 8
list 3
numeric 3
________________________
Group variables None

Variable type: character

skim_variable n_missing complete_rate min max empty n_unique whitespace
nome 0 1.00 3 21 0 87 0
cor_do_cabelo 5 0.94 5 20 0 11 0
cor_da_pele 0 1.00 4 28 0 31 0
cor_dos_olhos 0 1.00 4 19 0 14 0
sexo_biologico 4 0.95 5 12 0 4 0
genero 4 0.95 8 9 0 2 0
planeta_natal 10 0.89 4 14 0 48 0
especie 4 0.95 3 15 0 37 0

Variable type: list

skim_variable n_missing complete_rate n_unique min_length max_length
filmes 0 1 24 1 7
veiculos 0 1 11 0 2
naves_espaciais 0 1 17 0 5

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
altura 6 0.93 174.36 34.77 66 167.0 180 191.0 264 ▁▁▇▅▁
massa 28 0.68 97.31 169.46 15 55.6 79 84.5 1358 ▇▁▁▁▁
ano_nascimento 44 0.49 87.57 154.69 8 35.0 52 72.0 896 ▇▁▁▁▁

Veja que a saída da função skim mostra uma visão geral da base de dados, nos dando informações como número de linhas, número de colunas, e os tipos das colunas.

Ela fornece também informações individuais sobre cada coluna da base, separando as colunas por tipo: cada tipo nos dá um conjunto diferente de estatísticas, que façam sentido para aquele tipo de dado.

Além disso, se salvarmos a saída da função em um objeto, podemos obter um data frame no qual cada linha é referente a uma coluna da base de dados.

Isso é muito útil quando estamos lidando com bases que tem muitas colunas.

info_skim <- dados::dados_starwars |> 
  skim() |> 
  tibble::as_tibble()

Podemos, por exemplo, ordenar pelas variáveis que tem maior número de NA:

info_skim |> 
  dplyr::arrange(desc(n_missing))
# A tibble: 14 × 20
   skim_type skim_variable   n_missing complete_rate character.min character.max
   <chr>     <chr>               <int>         <dbl>         <int>         <int>
 1 numeric   ano_nascimento         44         0.494            NA            NA
 2 numeric   massa                  28         0.678            NA            NA
 3 character planeta_natal          10         0.885             4            14
 4 numeric   altura                  6         0.931            NA            NA
 5 character cor_do_cabelo           5         0.943             5            20
 6 character sexo_biologico          4         0.954             5            12
 7 character genero                  4         0.954             8             9
 8 character especie                 4         0.954             3            15
 9 character nome                    0         1                 3            21
10 character cor_da_pele             0         1                 4            28
11 character cor_dos_olhos           0         1                 4            19
12 list      filmes                  0         1                NA            NA
13 list      veiculos                0         1                NA            NA
14 list      naves_espaciais         0         1                NA            NA
# ℹ 14 more variables: character.empty <int>, character.n_unique <int>,
#   character.whitespace <int>, list.n_unique <int>, list.min_length <int>,
#   list.max_length <int>, numeric.mean <dbl>, numeric.sd <dbl>,
#   numeric.p0 <dbl>, numeric.p25 <dbl>, numeric.p50 <dbl>, numeric.p75 <dbl>,
#   numeric.p100 <dbl>, numeric.hist <chr>

Você pode ler mais sobre as funcionalidades do skimr nesse vignette