Carvalho Ribeiro Blog
  • Info

Conteúdo

  • O que são themes no pacote gtsummary
  • Qual o objetivo
  • De onde vem a demanda
  • Como fazer
  • Pra onde vai quem é o cliente
  • Qual o resultado

Formatando tabelas e dados usando themes e gtsummary package no R

Comunicação
Author

Marcelo Carvalho dos Anjos

Published

June 16, 2024

O que são themes no pacote gtsummary

  • São funções que criam presets de tabelas para criação de documentos técnicos.

  • A função faz parte do pacote gtsummary. Mas informações sobre o pacote Sjoberg et al. (2021).

Qual o objetivo

  • Os temas são úteis na criação de tabelas impactando nas características visuais e funcionais em uma tabela.

  • Dar praticidade para criação de tabelas em documentos técnicos

De onde vem a demanda

  • Necessidade de adequação das apresentações conforme requisitos de revistas e ou instituições responsáveis pela publicação de conteúdo técnico.

  • Facilitar a construção rápida de tabelas conforme padrões pré determinados.

Como fazer

Theme compact

#get packages
library(tidyverse)
library(gtsummary)
library(gtExtras)
library(survival)
library(survminer)
library(labelled)


#get data
data_iris <- iris %>% janitor::clean_names()
data_mtcars <- mtcars

#compact theme
reset_gtsummary_theme()
theme_gtsummary_compact()

data_iris %>% tbl_summary(by = species)
Characteristic setosa, N = 501 versicolor, N = 501 virginica, N = 501
sepal_length 5.00 (4.80, 5.20) 5.90 (5.60, 6.30) 6.50 (6.23, 6.90)
sepal_width 3.40 (3.20, 3.68) 2.80 (2.53, 3.00) 3.00 (2.80, 3.18)
petal_length 1.50 (1.40, 1.58) 4.35 (4.00, 4.60) 5.55 (5.10, 5.88)
petal_width 0.20 (0.20, 0.30) 1.30 (1.20, 1.50) 2.00 (1.80, 2.30)
1 Median (IQR)

Theme EDA exploratory data analysis

#eda theme
reset_gtsummary_theme()
theme_gtsummary_eda()

data_iris %>% tbl_summary(by = species)
Characteristic setosa, N = 50 versicolor, N = 50 virginica, N = 50
sepal_length


    Median (IQR) 5.00 (4.80, 5.20) 5.90 (5.60, 6.30) 6.50 (6.23, 6.90)
    Mean (SD) 5.01 (0.35) 5.94 (0.52) 6.59 (0.64)
    Range 4.30, 5.80 4.90, 7.00 4.90, 7.90
sepal_width


    Median (IQR) 3.40 (3.20, 3.68) 2.80 (2.53, 3.00) 3.00 (2.80, 3.18)
    Mean (SD) 3.43 (0.38) 2.77 (0.31) 2.97 (0.32)
    Range 2.30, 4.40 2.00, 3.40 2.20, 3.80
petal_length


    Median (IQR) 1.50 (1.40, 1.58) 4.35 (4.00, 4.60) 5.55 (5.10, 5.88)
    Mean (SD) 1.46 (0.17) 4.26 (0.47) 5.55 (0.55)
    Range 1.00, 1.90 3.00, 5.10 4.50, 6.90
petal_width


    Median (IQR) 0.20 (0.20, 0.30) 1.30 (1.20, 1.50) 2.00 (1.80, 2.30)
    Mean (SD) 0.25 (0.11) 1.33 (0.20) 2.03 (0.27)
    Range 0.10, 0.60 1.00, 1.80 1.40, 2.50

Theme journal

reset_gtsummary_theme()
theme_gtsummary_journal(journal = "jama")
data_iris %>% tbl_summary(by = species)

reset_gtsummary_theme()
theme_gtsummary_journal(journal = "lancet")
data_iris %>% tbl_summary(by = species)

reset_gtsummary_theme()
theme_gtsummary_journal(journal = "nejm")
data_iris %>% tbl_summary(by = species)
reset_gtsummary_theme()
theme_gtsummary_journal(journal = "qjecon")
data_iris %>% tbl_summary(by = species)
Characteristic setosa, N = 501 versicolor, N = 501 virginica, N = 501

sepal_length

5.00 (4.80, 5.20)

5.90 (5.60, 6.30)

6.50 (6.23, 6.90)

sepal_width

3.40 (3.20, 3.68)

2.80 (2.53, 3.00)

3.00 (2.80, 3.18)

petal_length

1.50 (1.40, 1.58)

4.35 (4.00, 4.60)

5.55 (5.10, 5.88)

petal_width

0.20 (0.20, 0.30)

1.30 (1.20, 1.50)

2.00 (1.80, 2.30)

1 Median (IQR)

Theme language

reset_gtsummary_theme()
theme_gtsummary_compact()
theme_gtsummary_language(language = "pt")

data_iris %>% tbl_summary(by = species) %>% add_p()
Características setosa, N = 501 versicolor, N = 501 virginica, N = 501 Valor p2
sepal_length 5.00 (4.80, 5.20) 5.90 (5.60, 6.30) 6.50 (6.23, 6.90) <0.001
sepal_width 3.40 (3.20, 3.68) 2.80 (2.53, 3.00) 3.00 (2.80, 3.18) <0.001
petal_length 1.50 (1.40, 1.58) 4.35 (4.00, 4.60) 5.55 (5.10, 5.88) <0.001
petal_width 0.20 (0.20, 0.30) 1.30 (1.20, 1.50) 2.00 (1.80, 2.30) <0.001
1 Mediana (AIQ)
2 Teste de Kruskal-Wallis

Theme sd theme

reset_gtsummary_theme()
theme_gtsummary_mean_sd()

data_iris %>% tbl_summary(by = species)
Characteristic setosa, N = 501 versicolor, N = 501 virginica, N = 501
sepal_length 5.01 (0.35) 5.94 (0.52) 6.59 (0.64)
sepal_width 3.43 (0.38) 2.77 (0.31) 2.97 (0.32)
petal_length 1.46 (0.17) 4.26 (0.47) 5.55 (0.55)
petal_width 0.25 (0.11) 1.33 (0.20) 2.03 (0.27)
1 Mean (SD)

Theme custom

Neste exemplo do livro de Kume (1993), queremos saber se há diferença entre o peso de pães que são fabricados em diferentes maquinas (maquina 1 e maquia 2)

data_pad <- read.csv("https://raw.githubusercontent.com/factorialmap/hitoshi_kume_database/main/data_baker_66.csv")


data_pad %>% 
  pivot_longer(cols = -c(dia, padeiro),
               names_to = c("maquina","amostra"),
               names_sep = "_",
               values_to = "peso") %>% 
  tbl_summary(by = maquina,
              include = peso) %>% 
  add_difference() %>% 
  as_gt() %>% 
  tab_header(title = md("**Experimento maquina de pães 1 e 2**"),
             subtitle = "Peso dos pães em gramas") %>% 
  tab_options(heading.align = "left",
              column_labels.border.top.color = "black",
              column_labels.border.top.width = px(3))
Experimento maquina de pães 1 e 2
Peso dos pães em gramas
Characteristic maquina1, N = 801 maquina2, N = 801 Difference2 95% CI2,3 p-value2
peso 204.9 (4.6) 210.5 (3.6) -5.6 -6.9, -4.3 <0.001
1 Mean (SD)
2 Welch Two Sample t-test
3 CI = Confidence Interval

Pra onde vai quem é o cliente

  • Comunicação de pesquisas técnicas e científicas.

  • Manuais de treinamento de equipe.

  • Portal de comunicação de informações do negócio.

Qual o resultado

  • Facilita a construção de tabela e melhor comunicação dos dados.

  • Possibilia a reprodução rápida e prática da tabela.

  • Melhora a consistência na apresentação de dados.

Vídeo tema para este post

References

Kume, Hitoshi. 1993. Metodos Estatisticos Para Melhoria Da Qualidade. 9ª edição. Gente.
Sjoberg, Daniel D., Karissa Whiting, Michael Curry, Jessica A. Lavery, and Joseph Larmarange. 2021. “Reproducible Summary Tables with the Gtsummary Package.” The R Journal 13: 570–80. https://doi.org/10.32614/RJ-2021-053.