Conheça o pacote {skimr}

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)
## Warning: package 'skimr' was built under R version 4.1.3

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()
Tabela 1: 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 x 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
## # ... with 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

comments powered by Disqus