O pacote gtsummary é uma ferramenta projetada para facilitar a criação de tabelas sumarizadas, especialmente úteis em artigos científicos. Ele é frequentemente utilizado em análises estatísticas e relatórios de pesquisa, permitindo que os usuários apresentem resultados de forma clara e organizada.

Aplicações na Elaboração de Tabelas:

• Tabelas Descritivas: Permite criar tabelas que resumem características demográficas ou clínicas de uma população de estudo, apresentando medidas como média, mediana, desvio padrão, entre outras.

• Tabelas de Comparação: Facilita a comparação entre grupos, mostrando diferenças estatísticas e medidas de efeito, como odds ratios ou hazard ratios.

• Relatórios de Resultados: Ideal para compilar resultados de análises estatísticas em um formato que pode ser diretamente incluído em manuscritos.

** Lembrando ** Antes de iniciar as análises devemos

# Pacotes necessários -----------------------------------------------------
library(rio)       # 
library(janitor)   # Limpeza dos nomes das variáveis
library(gtsummary) # Para criar tabelas
library(dplyr)     # Para manipulação de dados

# Ler Base de dados -----------------------------------------------------------
dados <- import("base_geral.csv")

# Transforma para factor todas as variaveis caracter
dados <- dados %>% 
  mutate (across(where(is.character), (as.factor)))

# Organização da base de dados --------------------------------------------
## Padroniza os nomes das variaveis - janitor
dados <- clean_names(dados)

### Padronizar o numero de casas dos valores percentuais
list(
  "tbl_summary-fn:percent_fun" = function(x)
    sprintf(x * 100, fmt = '%#.1f')
) %>%
  set_gtsummary_theme()

Colocar em ordem as respostas das variáveis categóricas ordinais

No gtsummary as tabelas, por padrão, as respostas das variáveis se apresentam em ordem alfabéticas, mas se houver variáveis categóricas ordinais, deve-se estabelecer a ordem correta.

# Estabelecendo ordem das variáveis categóricas ordinais - Renda ---------------------------------------
## Variavel renda
ordem_renda <- c("Menos de 1 sal", "1 a 3 sal", "4 a 6 sal", "Nao sabe")
dados$renda <- factor(dados$renda, levels = ordem_renda,
                             ordered = TRUE)

## Variavel class_imc
ordem_class_imc <- c("Desnutricao", "Eutrofia", "Sobrepeso", "Obesidade")
dados$class_imc <- factor(dados$class_imc, levels = ordem_class_imc,
                             ordered = TRUE)

Na foi realizada a definição de ordem da variavel escolaridade, pois a ordem alfabética coincidiu com a ordem desejada.

Tabelas de frequência simples

As tabelas de frequencia simples resumem características demográficas ou clínicas de uma população de estudo, apresentando medidas como média, mediana, desvio padrão, entre outras.

tab_descritiva <- dados %>%
  select (sexo: class_imc) %>%
  tbl_summary (
      statistic = list(
      all_continuous() ~ "{mean} ({sd})",
      all_categorical() ~ "{n} ({p}%)"
    ),
    digits = all_continuous() ~ 1, missing = "no"
  ) %>%
  modify_header(label ~ "**Características**")
tab_descritiva
Características N = 771
sexo
    F 45 (60.0%)
    M 30 (40.0%)
idade 32.3 (20.4)
escolaridade
    Alfabetizado 24 (31.2%)
    Fundamental 31 (40.3%)
    Medio 15 (19.5%)
    Superior 7 (9.1%)
renda
    Menos de 1 sal 10 (13.0%)
    1 a 3 sal 63 (81.8%)
    4 a 6 sal 3 (3.9%)
    Nao sabe 1 (1.3%)
imc 23.3 (6.0)
class_imc
    Desnutricao 4 (5.2%)
    Eutrofia 41 (53.2%)
    Sobrepeso 27 (35.1%)
    Obesidade 5 (6.5%)
1 n (%); Mean (SD)

Tabela de frequencia cruzada

As tabelas de frequencia cruzada compara os grupos (masculino e feminino) em relação as outras variáveis. E calcula automaticamente o teste estatístico adequado.

## Tabela cruzada by Sexo
tab_cruzada <- dados %>%
  select (sexo: class_imc) %>%
  tbl_summary (
    by = sexo,
    statistic = list(all_categorical() ~ "{n} ({p}%)"),
    digits = all_continuous() ~ 2,
  ) %>%
  modify_header(label ~ "**Características**") %>%
  bold_labels() %>% italicize_levels() %>%
  add_overall(col_label = "Total", last = F) %>%
  add_p(
    pvalue_fun = function(x)
      style_pvalue(x, digits = 3)
  )
## 2 missing rows in the "sexo" column have been removed.
## The following warnings were returned during `add_p()`:
## ! For variable `idade` (`sexo`) and "estimate", "statistic", "p.value",
##   "conf.low", and "conf.high" statistics: não é possível computar o valor de p
##   exato com o de desempate
## ! For variable `idade` (`sexo`) and "estimate", "statistic", "p.value",
##   "conf.low", and "conf.high" statistics: impossível computar os intervalos de
##   confiança exatos com empate
tab_cruzada
Características Total1 F
N = 45
1
M
N = 30
1
p-value2
idade 31.00 (14.00, 44.00) 35.00 (21.00, 44.00) 26.50 (6.00, 39.00) 0.027
escolaridade


0.008
    Alfabetizado 23 (30.7%) 8 (17.8%) 15 (50.0%)
    Fundamental 31 (41.3%) 19 (42.2%) 12 (40.0%)
    Medio 14 (18.7%) 12 (26.7%) 2 (6.7%)
    Superior 7 (9.3%) 6 (13.3%) 1 (3.3%)
renda


0.487
    Menos de 1 sal 10 (13.3%) 6 (13.3%) 4 (13.3%)
    1 a 3 sal 62 (82.7%) 36 (80.0%) 26 (86.7%)
    4 a 6 sal 3 (4.0%) 3 (6.7%) 0 (0.0%)
    Nao sabe 0 (0.0%) 0 (0.0%) 0 (0.0%)
imc 24.52 (19.62, 27.48) 25.08 (21.47, 27.46) 22.31 (16.32, 27.48) 0.159
class_imc


0.208
    Desnutricao 3 (4.0%) 3 (6.7%) 0 (0.0%)
    Eutrofia 40 (53.3%) 20 (44.4%) 20 (66.7%)
    Sobrepeso 27 (36.0%) 19 (42.2%) 8 (26.7%)
    Obesidade 5 (6.7%) 3 (6.7%) 2 (6.7%)
1 Median (Q1, Q3); n (%)
2 Wilcoxon rank sum test; Fisher’s exact test; Wilcoxon rank sum exact test