Pacote gt

Com o pacote gt, qualquer pessoa pode fazer tabelas de aparência maravilhosa usando a linguagem de programação R.

Com gt: podemos construir uma grande variedade de tabelas úteis.

Na figura abaixo são mostrados os elementos da tabela que podem ser alterados e trabalhados com esse pacote.

Partes da tabela com pacote gt.
Partes da tabela com pacote gt.

Vamos utilizar o banco de dados palmerpenguins como exemplo. Então você precisará baixar os pacotes gt e palmerpenguins, ok?

Pacote palmerpenguins.
Pacote palmerpenguins.
library(gt)
library(palmerpenguins)
library(tidyverse)

Primeiro vamos iniciar com uma tabela básica, visualizando uma parte do banco de dados. Vejam como ela renderiza, a extensão e também as linhas, colunas e etc…

penguins %>% 
  head(10) 
## # A tibble: 10 × 8
##    species island    bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
##    <fct>   <fct>              <dbl>         <dbl>             <int>       <int>
##  1 Adelie  Torgersen           39.1          18.7               181        3750
##  2 Adelie  Torgersen           39.5          17.4               186        3800
##  3 Adelie  Torgersen           40.3          18                 195        3250
##  4 Adelie  Torgersen           NA            NA                  NA          NA
##  5 Adelie  Torgersen           36.7          19.3               193        3450
##  6 Adelie  Torgersen           39.3          20.6               190        3650
##  7 Adelie  Torgersen           38.9          17.8               181        3625
##  8 Adelie  Torgersen           39.2          19.6               195        4675
##  9 Adelie  Torgersen           34.1          18.1               193        3475
## 10 Adelie  Torgersen           42            20.2               190        4250
## # ℹ 2 more variables: sex <fct>, year <int>

Agora vamos acrescentar título e subtítulo a nossa tabela.

penguins %>%
  dplyr::sample_frac(.05) %>%
  gt::gt() %>% 
  gt::tab_header(
    title =gt::md("Caracteristícas fenotípicas de pinguins"),
    subtitle = gt::md("Avaliações realizadas em três anos, e três ilhas do arquipélago Palmer")) %>% 
    opt_align_table_header(align ="left")
Caracteristícas fenotípicas de pinguins
Avaliações realizadas em três anos, e três ilhas do arquipélago Palmer
species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g sex year
Gentoo Biscoe 47.6 14.5 215 5400 male 2007
Gentoo Biscoe 59.6 17.0 230 6050 male 2007
Gentoo Biscoe 48.4 14.6 213 5850 male 2007
Adelie Dream 40.9 18.9 184 3900 male 2007
Chinstrap Dream 51.3 19.2 193 3650 male 2007
Adelie Dream 36.0 17.1 187 3700 female 2009
Adelie Dream 35.6 17.5 191 3175 female 2009
Gentoo Biscoe 47.5 14.2 209 4600 female 2008
Gentoo Biscoe 46.2 14.5 209 4800 female 2007
Gentoo Biscoe 41.7 14.7 210 4700 female 2009
Gentoo Biscoe 44.9 13.3 213 5100 female 2008
Adelie Dream 39.0 18.7 185 3650 male 2009
Adelie Biscoe 35.0 17.9 192 3725 female 2009
Adelie Torgersen 33.5 19.0 190 3600 female 2008
Gentoo Biscoe 52.1 17.0 230 5550 male 2009
Chinstrap Dream 47.5 16.8 199 3900 female 2008
Gentoo Biscoe 49.8 16.8 230 5700 male 2008

Podemos resumir dados utilizando as funções do nosso querido pacote tidyverse.

penguins %>%
  dplyr::group_by(species) %>% 
  dplyr::summarise_at(.vars = c("bill_length_mm",
                                "bill_depth_mm",
                                "flipper_length_mm",
                                "body_mass_g"),.funs = ~mean(., na.rm = TRUE)) %>% 
  gt::gt()
species bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
Adelie 38.79139 18.34636 189.9536 3700.662
Chinstrap 48.83382 18.42059 195.8235 3733.088
Gentoo 47.50488 14.98211 217.1870 5076.016

Vamos também salvar a análise em um novo objeto (tabela) para seguirmos formatando nossas tabelas! vejamos:

tabela <- penguins %>%
  dplyr::group_by(species) %>% 
  dplyr::summarise_at(.vars = c("bill_length_mm",
                                "bill_depth_mm",
                                "flipper_length_mm",
                                "body_mass_g"),.funs = ~mean(., na.rm = TRUE)) %>% 
  gt::gt()

Mudando o nome das variáveis:

(tabela <- tabela %>% 
  gt::cols_label(
    bill_length_mm = gt::html("Comprimento<br>médio do<br>bico (<em>mm</em>)"),
    bill_depth_mm = gt::html("Profundidade<br>média do<br>bico (<em>mm</em>)"),
    flipper_length_mm = gt::html("Comprimento<br>médio da<br> nadadeira (<em>mm</em>)"),
    body_mass_g = gt::html("Média da<br>massa<br>corporal (<em>g</em>)"),
    
  ) %>% 
  gt::tab_header(
    title =gt::md("Caracteristícas fenotípicas de pinguins"),
    subtitle = gt::md("Avaliações realizadas em três anos, e três ilhas do arquipélago Palmer")) %>% 
    gt::opt_align_table_header(align = "left"))
Caracteristícas fenotípicas de pinguins
Avaliações realizadas em três anos, e três ilhas do arquipélago Palmer
species Comprimento
médio do
bico (mm)
Profundidade
média do
bico (mm)
Comprimento
médio da
nadadeira (mm)
Média da
massa
corporal (g)
Adelie 38.79139 18.34636 189.9536 3700.662
Chinstrap 48.83382 18.42059 195.8235 3733.088
Gentoo 47.50488 14.98211 217.1870 5076.016

Outra função interessante é a redução no número de digitos.

(tabela <- tabela %>% 
  gt::fmt_number(columns = gt::everything()))
Caracteristícas fenotípicas de pinguins
Avaliações realizadas em três anos, e três ilhas do arquipélago Palmer
species Comprimento
médio do
bico (mm)
Profundidade
média do
bico (mm)
Comprimento
médio da
nadadeira (mm)
Média da
massa
corporal (g)
Adelie 38.79 18.35 189.95 3,700.66
Chinstrap 48.83 18.42 195.82 3,733.09
Gentoo 47.50 14.98 217.19 5,076.02

Podemos alterar também a largura, vejam:

(tabela <- tabela %>% 
   gt::cols_width (
     bill_length_mm ~ gt::px(130),
      bill_depth_mm ~ gt::px(130),
      flipper_length_mm ~ gt::px(150),
      body_mass_g ~ gt::px(120)))
Caracteristícas fenotípicas de pinguins
Avaliações realizadas em três anos, e três ilhas do arquipélago Palmer
species Comprimento
médio do
bico (mm)
Profundidade
média do
bico (mm)
Comprimento
médio da
nadadeira (mm)
Média da
massa
corporal (g)
Adelie 38.79 18.35 189.95 3,700.66
Chinstrap 48.83 18.42 195.82 3,733.09
Gentoo 47.50 14.98 217.19 5,076.02

O pacote gt permite que possamos colocar notas de rodapé, adoro!

(tabela <- tabela %>% 
   gt::tab_source_note(source_note = "Fonte: Banco de dados do pacote palmerpenguins"
   ))
Caracteristícas fenotípicas de pinguins
Avaliações realizadas em três anos, e três ilhas do arquipélago Palmer
species Comprimento
médio do
bico (mm)
Profundidade
média do
bico (mm)
Comprimento
médio da
nadadeira (mm)
Média da
massa
corporal (g)
Adelie 38.79 18.35 189.95 3,700.66
Chinstrap 48.83 18.42 195.82 3,733.09
Gentoo 47.50 14.98 217.19 5,076.02
Fonte: Banco de dados do pacote palmerpenguins

Sempre que queremos destacar um resultado importante, podemos utilizar:

tabela  %>%
  gt::data_color(columns = bill_length_mm, 
     colors = scales::col_numeric(
       palette=c("blue", "red", "orange"),
       domain= NULL))
Caracteristícas fenotípicas de pinguins
Avaliações realizadas em três anos, e três ilhas do arquipélago Palmer
species Comprimento
médio do
bico (mm)
Profundidade
média do
bico (mm)
Comprimento
médio da
nadadeira (mm)
Média da
massa
corporal (g)
Adelie 38.79 18.35 189.95 3,700.66
Chinstrap 48.83 18.42 195.82 3,733.09
Gentoo 47.50 14.98 217.19 5,076.02
Fonte: Banco de dados do pacote palmerpenguins

Pessoal estas foram algumas dicas utilizando o pacote gt(), consulte a documentação do pacote, tem muito mais funções, acesse:

Pacote {gt}

Me contem se vocês já conheciam este pacote?