flowchart LR
A[Variável] -->B(Numerica)
A -->C(Categórica)
B --> D{Número \n inteiro?}
D -->|Sim| E(Discreto)
D -->|Não| F(Contínuo)
C --> G{Quantas \n categorias?}
G -->|Duas|H(Binária\Dicotômica)
G -->|Três ou mais|I{Segue \n uma ordem?}
I -->|Sim|J(Ordinal)
I -->|Não|L(Norminal)
Como construir tabela para artigo técnico - gtsummary
O que é uma tabela de dados
Tabela é um meio eficiente de representação e comunicação de dados tendo como características principais linhas, colunas, sumarizações e comparativos.
Devido a versatilidade e capacidade de informações, é comum o uso em publicações técnicas e científicas.
Qual o objetivo
Representar de forma compacta informações importantes que podem ser difíceis de expressar em texto ou gráficos.
Permitir a comparação entre valores, resumir ou definir conceitos, termos ou outros detalhes de um estudo.
Permitir que o leitor veja rapidamente os resultados de dados complexos os quais são organizados e descritos adequadamente no texto Slutsky (2014).
Trazer clareza nos resultados apresentados.
De onde vem a demanda
Da necessidade de registrar, computar e comunicar dados.
Necessidade de mostrar muitos valores em um pequeno espaço.
Necessidade de comparar e contrastar valores de dados com várias características ou variáveis compartilhadas.
Para mostrar a presença ou ausência de características específicas.
Como fazer
Para reproduzir os códigos abaixo serão necessários os pacotes tidyverse, janitor, gtsummary, gtExtras, gt.
O dados usados iris, mtcars, trial, os quais estão nos pacotes que serão carregados não sendo necessário baixá-los. Já o dado corn pode ser baixado em Kniss AR, Streibig JC (2018) Statistical Analysis of Agricultural Experiments using R
Entender bem a estrutura dos dados pode facilitar o trabalho de construção de tabelas .
# package -----------------------------------------------------------------
library(tidyverse)
library(gtsummary)
library(gtExtras)
library(gt)
library(survival)
# data --------------------------------------------------------------------
data_mtcars <- mtcars %>% janitor::clean_names()
data_iris <- iris %>% janitor::clean_names()
data_trial <- trial
data_corn <- read.csv("http://rstats4ag.org/data/irrigcorn.csv") %>%
janitor::clean_names()data_mtcars %>%
select(mpg, cyl, wt, vs) %>%
tbl_summary(by= vs,
label = c(mpg ~ "Milhas/galão",
cyl ~ "Cilindros",
wt ~ "Peso")) %>%
modify_header(label = "**Variáveis**",
stat_1 = "V {n}",
stat_2 = "S {n}") %>%
modify_spanning_header(c("stat_1","stat_2") ~ "**Type of Engine**") %>%
modify_caption("**Figura1. Consumo de gasolina por tipo de motor**") %>%
add_difference() %>%
bold_p(t = 0.05) %>%
bold_labels() %>%
modify_caption("<div style='text-align:left;
font-weight: bold;
color:grey'>Figura1. Consumo de gasolina por tipo de motor </div>")| Variáveis | Type of Engine | Difference2 | 95% CI2,3 | p-value2 | |
|---|---|---|---|---|---|
| V 181 | S 141 | ||||
| Milhas/galão | 15.7 (14.8, 19.1) | 22.8 (21.4, 29.6) | -7.9 | -11, -4.4 | <0.001 |
| Cilindros | 2.8 | 1.8, 3.8 | |||
| 4 | 1 (5.6%) | 10 (71%) | |||
| 6 | 3 (17%) | 4 (29%) | |||
| 8 | 14 (78%) | 0 (0%) | |||
| Peso | 3.57 (3.24, 3.84) | 2.62 (2.00, 3.21) | 1.1 | 0.49, 1.7 | <0.001 |
| 1 Median (IQR); n (%) | |||||
| 2 Welch Two Sample t-test; Standardized Mean Difference | |||||
| 3 CI = Confidence Interval | |||||
library(survival)
tbl_fit_logreg_trial <-
glm(response~ trt + grade + age, data = data_trial, family = binomial(link="logit")) %>%
tbl_regression(exponentiate= TRUE)
tbl_fit_coxph_trial <-
coxph(Surv(ttdeath, death)~ trt + grade + age, data = data_trial) %>%
tbl_regression(exponentiate = TRUE)
tbl_merge(tbls = list(tbl_fit_logreg_trial, tbl_fit_coxph_trial),
tab_spanner = c("**Log reg**", "**Coxph**"))| Characteristic | Log reg | Coxph | ||||
|---|---|---|---|---|---|---|
| OR1 | 95% CI1 | p-value | HR1 | 95% CI1 | p-value | |
| Chemotherapy Treatment | ||||||
| Drug A | — | — | — | — | ||
| Drug B | 1.13 | 0.60, 2.13 | 0.7 | 1.30 | 0.88, 1.92 | 0.2 |
| Grade | ||||||
| I | — | — | — | — | ||
| II | 0.85 | 0.39, 1.85 | 0.7 | 1.21 | 0.73, 1.99 | 0.5 |
| III | 1.01 | 0.47, 2.15 | >0.9 | 1.79 | 1.12, 2.86 | 0.014 |
| Age | 1.02 | 1.00, 1.04 | 0.10 | 1.01 | 0.99, 1.02 | 0.3 |
| 1 OR = Odds Ratio, CI = Confidence Interval, HR = Hazard Ratio | ||||||
data_corn %>%
select(irrig, yield_tonha, yield_bu_a) %>%
tbl_summary(by = irrig,
label = list(yield_tonha ~ "Tons/hec",
yield_bu_a ~ "Bushel Acre")) %>%
add_difference() %>%
modify_header(label = "**Yield**") %>%
modify_spanning_header(all_stat_cols() ~ "**Irrigation type** {N} ")| Yield | Irrigation type 96 | Difference2 | 95% CI2,3 | p-value2 | |
|---|---|---|---|---|---|
| Full, N = 481 | Limited, N = 481 | ||||
| Tons/hec | 11.42 (10.67, 12.08) | 10.14 (9.40, 11.41) | 1.1 | 0.63, 1.6 | <0.001 |
| Bushel Acre | 182 (170, 193) | 162 (150, 182) | 18 | 10, 26 | <0.001 |
| 1 Median (IQR) | |||||
| 2 Welch Two Sample t-test | |||||
| 3 CI = Confidence Interval | |||||
mtcars %>%
slice_sample(n=8) %>%
gt() %>%
gt_theme_guardian() %>%
data_color(columns = mpg:hp, colors = c("white","red")) %>%
gt_highlight_rows(rows = 2, font_weight = "bold")Warning: Since gt v0.9.0, the `colors` argument has been deprecated.
• Please use the `palette` argument to define a color palette.
This warning is displayed once every 8 hours.
| mpg | cyl | disp | hp | drat | wt | qsec | vs | am | gear | carb |
|---|---|---|---|---|---|---|---|---|---|---|
| 21.0 | 6 | 160.0 | 110 | 3.90 | 2.875 | 17.02 | 0 | 1 | 4 | 4 |
| 14.7 | 8 | 440.0 | 230 | 3.23 | 5.345 | 17.42 | 0 | 0 | 3 | 4 |
| 19.7 | 6 | 145.0 | 175 | 3.62 | 2.770 | 15.50 | 0 | 1 | 5 | 6 |
| 18.7 | 8 | 360.0 | 175 | 3.15 | 3.440 | 17.02 | 0 | 0 | 3 | 2 |
| 10.4 | 8 | 472.0 | 205 | 2.93 | 5.250 | 17.98 | 0 | 0 | 3 | 4 |
| 18.1 | 6 | 225.0 | 105 | 2.76 | 3.460 | 20.22 | 1 | 0 | 3 | 1 |
| 32.4 | 4 | 78.7 | 66 | 4.08 | 2.200 | 19.47 | 1 | 1 | 4 | 1 |
| 14.3 | 8 | 360.0 | 245 | 3.21 | 3.570 | 15.84 | 0 | 0 | 3 | 4 |
mtcars %>%
group_by(cyl) %>%
summarise(mpg_data = list(mpg), .groups = "drop") %>%
gt() %>%
gt_plt_sparkline(mpg_data)| cyl | mpg_data |
|---|---|
| 4 | |
| 6 | |
| 8 |
mtcars %>%
group_by(cyl) %>%
summarise(mpg_dat = list(mpg)) %>%
gt() %>%
gt_plt_dist(mpg_dat)| cyl | mpg_dat |
|---|---|
| 4 | |
| 6 | |
| 8 |
Pra onde vai quem é o cliente
Etapas de analise de resultados, validação, remodelagem ou comunicação.
Inclusão em documento técnico reproduzível.
Comunicação de descobertas ou resultados de trabalhos técnicos.
Documentação ou treinamento de pessoal.
Qual o resultado
Aperfeiçoar as técnicas de representação, calculo e comunicação de dados e estudos técnicos
Facilitar o entendimento das informações contidas nos documentos técnicos poupando tempo e dinheiro, permitindo a replicação e experimentos e consequentemente busca por melhoria.
Facilitar o reconhecimento de registros, estudos, descobertas em pesquisas futuras