This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License (CC BY-SA4.0).
Install recent R release
Current version 4.2.1
Install RStudio
I am on version 2022.07.1+554
Install packages
Ensure you can knit Rmarkdown files
Please add any questions to the public Zoom chat.
Shannon and Karissa will monitor the chat
We’ll also have time for questions at the break and at the end
Quality of medical research is often low
Low quality code in medical research part of the problem
Low quality code is more likely to contain errors
Reproducibility is often cumbersome and time-consuming
The trial
data set is included with {gtsummary}
Simulated data set of baseline characteristics for 200 patients who receive Drug A or Drug B
Variables were assigned labels using the labelled
package
trt | age | marker | stage | grade | response | death | ttdeath |
---|---|---|---|---|---|---|---|
Drug A | 23 | 0.160 | T1 | II | 0 | 0 | 24.00 |
Drug B | 9 | 1.107 | T2 | I | 1 | 0 | 24.00 |
Drug A | 31 | 0.277 | T1 | II | 0 | 0 | 24.00 |
Drug A | NA | 2.067 | T3 | III | 1 | 1 | 17.64 |
Drug A | 51 | 2.767 | T4 | III | 1 | 1 | 16.43 |
Drug B | 39 | 0.613 | T4 | I | 0 | 1 | 15.64 |
As an exercise, we’ll prepare data, data summaries, analyses, and a brief write-up of the results.
Download zip file with exercises with this link.
Extract the zip file locally and open in an RStudio project. You can unzip the file with your system utilities, or with zip::unzip()
. Unzip the files into their own folder!
Add variable labels to the data frame using labelled::set_variable_labels()
.
08:00
Four types of summaries: continuous
, continuous2
, categorical
, and dichotomous
Statistics are median (IQR)
for continuous, n (%)
for categorical/dichotomous
Variables coded 0/1
, TRUE/FALSE
, Yes/No
treated as dichotomous
Lists NA
values under “Unknown”
Label attributes are printed automatically
Characteristic | Drug A, N = 981 | Drug B, N = 1021 |
---|---|---|
Age | 46 (37, 59) | 48 (39, 56) |
Unknown | 7 | 4 |
Grade | ||
I | 35 (36%) | 33 (32%) |
II | 32 (33%) | 36 (35%) |
III | 31 (32%) | 33 (32%) |
Tumor Response | 28 (29%) | 33 (34%) |
Unknown | 3 | 4 |
1 Median (IQR); n (%) |
by
: specify a column variable for cross-tabulationCharacteristic | Drug A, N = 981 | Drug B, N = 1021 |
---|---|---|
Age | ||
Median (IQR) | 46 (37, 59) | 48 (39, 56) |
Unknown | 7 | 4 |
Grade | ||
I | 35 (36%) | 33 (32%) |
II | 32 (33%) | 36 (35%) |
III | 31 (32%) | 33 (32%) |
Tumor Response | 28 (29%) | 33 (34%) |
Unknown | 3 | 4 |
1 n (%) |
by
: specify a column variable for cross-tabulation
type
: specify the summary type
Characteristic | Drug A, N = 981 | Drug B, N = 1021 |
---|---|---|
Age | ||
Mean (SD) | 47 (15) | 47 (14) |
Range | 6, 78 | 9, 83 |
Unknown | 7 | 4 |
Grade | ||
I | 35 (36%) | 33 (32%) |
II | 32 (33%) | 36 (35%) |
III | 31 (32%) | 33 (32%) |
Tumor Response | 28 / 95 (29%) | 33 / 98 (34%) |
Unknown | 3 | 4 |
1 n (%); n / N (%) |
by
: specify a column variable for cross-tabulation
type
: specify the summary type
statistic
: customize the reported statistics
Characteristic | Drug A, N = 981 | Drug B, N = 1021 |
---|---|---|
Age | ||
Mean (SD) | 47 (15) | 47 (14) |
Range | 6, 78 | 9, 83 |
Unknown | 7 | 4 |
Pathologic tumor grade | ||
I | 35 (36%) | 33 (32%) |
II | 32 (33%) | 36 (35%) |
III | 31 (32%) | 33 (32%) |
Tumor Response | 28 / 95 (29%) | 33 / 98 (34%) |
Unknown | 3 | 4 |
1 n (%); n / N (%) |
by
: specify a column variable for cross-tabulation
type
: specify the summary type
statistic
: customize the reported statistics
label
: change or customize variable labelsCharacteristic | Drug A, N = 981 | Drug B, N = 1021 |
---|---|---|
Age | ||
Mean (SD) | 47.0 (14.7) | 47.4 (14.0) |
Range | 6.0, 78.0 | 9.0, 83.0 |
Unknown | 7 | 4 |
Pathologic tumor grade | ||
I | 35 (36%) | 33 (32%) |
II | 32 (33%) | 36 (35%) |
III | 31 (32%) | 33 (32%) |
Tumor Response | 28 / 95 (29%) | 33 / 98 (34%) |
Unknown | 3 | 4 |
1 n (%); n / N (%) |
by
: specify a column variable for cross-tabulation
type
: specify the summary type
statistic
: customize the reported statistics
label
: change or customize variable labels
digits
: specify the number of decimal places for rounding
Named list are OK too! label = list(age = "Patient Age")
tbl_summary()
objects can also be updated using related functions.
add_*()
add additional column of statistics or information, e.g. p-values, q-values, overall statistics, treatment differences, N obs., and more
modify_*()
modify table headers, spanning headers, footnotes, and more
bold_*()/italicize_*()
style labels, variable levels, significant p-values
Characteristic | Drug A, N = 981 | Drug B, N = 1021 | p-value2 | q-value3 |
---|---|---|---|---|
Age | 46 (37, 59) | 48 (39, 56) | 0.7 | 0.9 |
Unknown | 7 | 4 | ||
Grade | 0.9 | 0.9 | ||
I | 35 (36%) | 33 (32%) | ||
II | 32 (33%) | 36 (35%) | ||
III | 31 (32%) | 33 (32%) | ||
Tumor Response | 28 (29%) | 33 (34%) | 0.5 | 0.9 |
Unknown | 3 | 4 | ||
1 Median (IQR); n (%) | ||||
2 Wilcoxon rank sum test; Pearson’s Chi-squared test | ||||
3 False discovery rate correction for multiple testing |
add_p()
: adds a column of p-values
add_q()
: adds a column of p-values adjusted for multiple comparisons through a call to p.adjust()
Characteristic | Overall, N = 2001 | Drug A, N = 981 | Drug B, N = 1021 |
---|---|---|---|
Age | 47 (38, 57) | 46 (37, 59) | 48 (39, 56) |
Grade | |||
I | 68 (34%) | 35 (36%) | 33 (32%) |
II | 68 (34%) | 32 (33%) | 36 (35%) |
III | 64 (32%) | 31 (32%) | 33 (32%) |
Tumor Response | 61 (32%) | 28 (29%) | 33 (34%) |
1 Median (IQR); n (%) |
add_overall()
: adds a column of overall statisticsCharacteristic | N | Overall, N = 2001 | Drug A, N = 981 | Drug B, N = 1021 |
---|---|---|---|---|
Age | 189 | 47 (38, 57) | 46 (37, 59) | 48 (39, 56) |
Grade | 200 | |||
I | 68 (34%) | 35 (36%) | 33 (32%) | |
II | 68 (34%) | 32 (33%) | 36 (35%) | |
III | 64 (32%) | 31 (32%) | 33 (32%) | |
Tumor Response | 193 | 61 (32%) | 28 (29%) | 33 (34%) |
1 Median (IQR); n (%) |
add_overall()
: adds a column of overall statisticsadd_n()
: adds a column with the sample sizeCharacteristic | N | Overall, N = 200 | Drug A, N = 98 | Drug B, N = 102 |
---|---|---|---|---|
Age, Median (IQR) | 189 | 47 (38, 57) | 46 (37, 59) | 48 (39, 56) |
Grade, No. (%) | 200 | |||
I | 68 (34%) | 35 (36%) | 33 (32%) | |
II | 68 (34%) | 32 (33%) | 36 (35%) | |
III | 64 (32%) | 31 (32%) | 33 (32%) | |
Tumor Response, No. (%) | 193 | 61 (32%) | 28 (29%) | 33 (34%) |
add_overall()
: adds a column of overall statisticsadd_n()
: adds a column with the sample sizeadd_stat_label()
: adds a description of the reported statisticCharacteristic | Drug A, N = 981 | Drug B, N = 1021 | p-value2 |
---|---|---|---|
Age | 46 (37, 59) | 48 (39, 56) | 0.7 |
Unknown | 7 | 4 | |
Grade | 0.9 | ||
I | 35 (36%) | 33 (32%) | |
II | 32 (33%) | 36 (35%) | |
III | 31 (32%) | 33 (32%) | |
Tumor Response | 28 (29%) | 33 (34%) | 0.5 |
Unknown | 3 | 4 | |
1 Median (IQR); n (%) | |||
2 Wilcoxon rank sum test; Pearson’s Chi-squared test |
bold_labels()
: bold the variable labelsitalicize_levels()
: italicize the variable levelsbold_p()
: bold p-values according a specified thresholdCharacteristic | Drug | |
---|---|---|
Group A1 | Group B1 | |
Age | 46 (37, 59) | 48 (39, 56) |
Grade | ||
I | 35 (36%) | 33 (32%) |
II | 32 (33%) | 36 (35%) |
III | 31 (32%) | 33 (32%) |
Tumor Response | 28 (29%) | 33 (34%) |
1 median (IQR) for continuous; n (%) for categorical |
show_header_names()
to see the internal header names available for use in modify_header()
all_stat_cols()
selects columns "stat_1"
and "stat_2"
Create a summary table split by whether or not the participant quit smoking or not.
Include all variables in the table except the study outcome: death.
Consider using gtsummary functions that add_*()
, modify_*()
or style your summary table.
tbl_summary()
tutorial for reference: https://www.danieldsjoberg.com/gtsummary/articles/tbl_summary.html08:00
trial |>
select(trt, marker, response) |>
tbl_summary(
by = trt,
statistic = list(marker ~ "{mean} ({sd})",
response ~ "{p}%"),
missing = "no"
) |>
add_difference()
Characteristic | Drug A, N = 981 | Drug B, N = 1021 | Difference2 | 95% CI2,3 | p-value2 |
---|---|---|---|---|---|
Marker Level (ng/mL) | 1.02 (0.89) | 0.82 (0.83) | 0.20 | -0.05, 0.44 | 0.12 |
Tumor Response | 29% | 34% | -4.2% | -18%, 9.9% | 0.6 |
1 Mean (SD); % | |||||
2 Welch Two Sample t-test; Two sample test for equality of proportions | |||||
3 CI = Confidence Interval |
add_difference()
: mean and rate differences between two groups. Can also be adjusted differencesAnd many more!
See the documentation at http://www.danieldsjoberg.com/gtsummary/reference/index.html
And a detailed tbl_summary()
vignette at http://www.danieldsjoberg.com/gtsummary/articles/tbl_summary.html
tbl_cross()
is a wrapper for tbl_summary()
for n x m tables
tbl_continuous()
summarizes a continuous variable by 1, 2, or more categorical variables
Characteristic | Survived | p-value2 | |
---|---|---|---|
No, N = 1,4901 | Yes, N = 7111 | ||
Class | 0.7 | ||
1st | 122 (8.2%) | 203 (29%) | |
2nd | 167 (11%) | 118 (17%) | |
3rd | 528 (35%) | 178 (25%) | |
Crew | 673 (45%) | 212 (30%) | |
Sex | 0.048 | ||
Male | 1,364 (92%) | 367 (52%) | |
Female | 126 (8.5%) | 344 (48%) | |
1 n (%) | |||
2 chi-squared test with Rao & Scott’s second-order correction |
library(survival)
fit <- survfit(Surv(ttdeath, death) ~ trt, trial)
tbl_survfit(
fit,
times = c(12, 24),
label_header = "**{time} Month**"
) |>
add_p()
Characteristic | 12 Month | 24 Month | p-value1 |
---|---|---|---|
Chemotherapy Treatment | 0.2 | ||
Drug A | 91% (85%, 97%) | 47% (38%, 58%) | |
Drug B | 86% (80%, 93%) | 41% (33%, 52%) | |
1 Log-rank test |
Is there a difference in death rates by smoking status?
Using tbl_summary()
report the death rates by smoking status.
Add the (unadjusted) difference in death rates by smoking status using add_difference()
.
Produce a second table that reports an adjusted difference in death rates.
adj.vars
.08:00
Looks messy and it’s not easy to digest
Characteristic | log(OR)1 | 95% CI1 | p-value |
---|---|---|---|
Age | 0.02 | 0.00, 0.04 | 0.091 |
T Stage | |||
T1 | — | — | |
T2 | -0.54 | -1.4, 0.31 | 0.2 |
T3 | -0.06 | -1.0, 0.82 | 0.9 |
T4 | -0.23 | -1.1, 0.64 | 0.6 |
1 OR = Odds Ratio, CI = Confidence Interval |
Displays p-values for covariates
Shows reference levels for categorical variables
Model type recognized as logistic regression with odds ratio appearing in header
Characteristic | OR1 | 95% CI1 | p-value |
---|---|---|---|
Age | 1.02 | 1.00, 1.04 | 0.087 |
T Stage | 0.6 | ||
T1 | — | — | |
T2 | 0.58 | 0.24, 1.37 | |
T3 | 0.94 | 0.39, 2.28 | |
T4 | 0.79 | 0.33, 1.90 | |
No. Obs. | 183 | ||
Log-likelihood | -112 | ||
AIC | 234 | ||
BIC | 250 | ||
1 OR = Odds Ratio, CI = Confidence Interval |
Display odds ratio estimates and confidence intervals
Add global p-values
Add various model statistics
biglm::bigglm()
biglmm::bigglm()
brms::brm()
cmprsk::crr()
fixest::feglm()
fixest::femlm()
fixest::feNmlm()
fixest::feols()
gam::gam()
geepack::geeglm()
glmmTMB::glmmTMB()
lavaan::lavaan()
lfe::felm()
lme4::glmer()
lme4::glmer.nb()
lme4::lmer()
MASS::glm.nb()
MASS::polr()
mgcv::gam()
mice::mira
nnet::multinom()
ordinal::clm()
ordinal::clmm()
parsnip::model_fit
plm::plm()
rstanarm::stan_glm()
stats::aov()
stats::glm()
stats::lm()
stats::nls()
survey::svycoxph()
survey::svyglm()
survey::svyolr()
survival::clogit()
survival::coxph()
survival::survreg()
tidycmprsk::crr()
VGAM::vglm()
Custom tidiers can be written and passed to tbl_regression()
using the tidy_fun=
argument.
Build a logistic regression model with death as the outcome. Include smoking and the other variables as covariates.
Summarize the logistic regression model with tbl_regression()
.
What modifications did you decide to make the the regression summary?tbl_regression()
08:00
Characteristic | N | OR1 | 95% CI1 | p-value |
---|---|---|---|---|
Chemotherapy Treatment | 193 | |||
Drug A | — | — | ||
Drug B | 1.21 | 0.66, 2.24 | 0.5 | |
Age | 183 | 1.02 | 1.00, 1.04 | 0.10 |
Grade | 193 | |||
I | — | — | ||
II | 0.95 | 0.45, 2.00 | 0.9 | |
III | 1.10 | 0.52, 2.29 | 0.8 | |
1 OR = Odds Ratio, CI = Confidence Interval |
Specify model method
, method.args
, and the response
variable
Arguments and helper functions like exponentiate
, bold_*()
, add_global_p()
can also be used with tbl_uvregression()
10:00
Tables are important, but we often need to report results in-line.
Any statistic reported in a {gtsummary} table can be extracted and reported in-line in an R Markdown document with the inline_text()
function.
The pattern of what is reported can be modified with the pattern=
argument.
Default is pattern = "{estimate} ({conf.level*100}% CI {conf.low}, {conf.high}; {p.value})"
for regression summaries.
Characteristic | N | OR1 | 95% CI1 | p-value |
---|---|---|---|---|
Chemotherapy Treatment | 193 | |||
Drug A | — | — | ||
Drug B | 1.21 | 0.66, 2.24 | 0.5 | |
Age | 183 | 1.02 | 1.00, 1.04 | 0.10 |
Grade | 193 | |||
I | — | — | ||
II | 0.95 | 0.45, 2.00 | 0.9 | |
III | 1.10 | 0.52, 2.29 | 0.8 | |
1 OR = Odds Ratio, CI = Confidence Interval |
In Code: The odds ratio for age is `r inline_text(tbl_uvreg, variable = age)`
In Report: The odds ratio for age is 1.02 (95% CI 1.00, 1.04; p=0.10)
Characteristic | Drug A, N = 981 | Drug B, N = 1021 | Difference2 | 95% CI2,3 | p-value2 |
---|---|---|---|---|---|
Marker Level (ng/mL) | 0.84 (0.24, 1.57) | 0.52 (0.19, 1.20) | 0.20 | -0.05, 0.44 | 0.12 |
1 Median (IQR) | |||||
2 Welch Two Sample t-test | |||||
3 CI = Confidence Interval |
In Code:
`r inline_text(gts_small_summary, variable = marker, column = 'Drug A')`
.`r inline_text(gts_small_summary, variable = marker, column = 'Drug A', pattern = '{median}')`
.`r inline_text(gts_small_summary, variable = marker, pattern = '{estimate} (95% {ci})')`
.In Report:
Write a brief summary of the results above using inline_text()
to report values from the tables directly into the markdown report. You’ll likely need gtsummary::show_header_names()
.
Report at least one statistic from the cohort summary.
Report the difference in death rates.
Report the odds ratio for death from the multivariable logistic regression model.
08:00
A univariable table:
tbl_uvsurv <-
trial |>
select(age, grade, death, ttdeath) |>
tbl_uvregression(
method = coxph,
y = Surv(ttdeath, death),
exponentiate = TRUE
) |>
add_global_p()
tbl_uvsurv
Characteristic | N | HR1 | 95% CI1 | p-value |
---|---|---|---|---|
Age | 189 | 1.01 | 0.99, 1.02 | 0.3 |
Grade | 200 | 0.075 | ||
I | — | — | ||
II | 1.28 | 0.80, 2.05 | ||
III | 1.69 | 1.07, 2.66 | ||
1 HR = Hazard Ratio, CI = Confidence Interval |
A multivariable table:
tbl_mvsurv <-
coxph(
Surv(ttdeath, death) ~ age + grade,
data = trial
) |>
tbl_regression(
exponentiate = TRUE
) |>
add_global_p()
tbl_mvsurv
Characteristic | HR1 | 95% CI1 | p-value |
---|---|---|---|
Age | 1.01 | 0.99, 1.02 | 0.3 |
Grade | 0.041 | ||
I | — | — | |
II | 1.20 | 0.73, 1.97 | |
III | 1.80 | 1.13, 2.87 | |
1 HR = Hazard Ratio, CI = Confidence Interval |
Characteristic | Univariable | Multivariable | |||||
---|---|---|---|---|---|---|---|
N | HR1 | 95% CI1 | p-value | HR1 | 95% CI1 | p-value | |
Age | 189 | 1.01 | 0.99, 1.02 | 0.3 | 1.01 | 0.99, 1.02 | 0.3 |
Grade | 200 | 0.075 | 0.041 | ||||
I | — | — | — | — | |||
II | 1.28 | 0.80, 2.05 | 1.20 | 0.73, 1.97 | |||
III | 1.69 | 1.07, 2.66 | 1.80 | 1.13, 2.87 | |||
1 HR = Hazard Ratio, CI = Confidence Interval |
A univariable table:
A multivariable table:
tbl_mvsurv2 <-
coxph(Surv(ttdeath, death) ~
trt + grade + stage + marker,
data = trial) |>
tbl_regression(
show_single_row = trt,
label = trt ~ "Drug B vs A",
exponentiate = TRUE,
include = "trt"
)
tbl_mvsurv2
Characteristic | HR1 | 95% CI1 | p-value |
---|---|---|---|
Drug B vs A | 1.30 | 0.88, 1.92 | 0.2 |
1 HR = Hazard Ratio, CI = Confidence Interval |
sm_trial |>
mutate(grade = paste("Grade", grade)) |>
tbl_strata(
strata = grade,
~tbl_summary(.x, by = trt, missing = "no") |>
modify_header(all_stat_cols() ~ "**{level}**")
)
Characteristic | Grade I | Grade II | Grade III | |||
---|---|---|---|---|---|---|
Drug A1 | Drug B1 | Drug A1 | Drug B1 | Drug A1 | Drug B1 | |
Age | 46 (36, 60) | 48 (42, 55) | 44 (31, 54) | 50 (43, 57) | 52 (42, 60) | 45 (36, 52) |
Tumor Response | 8 (23%) | 13 (41%) | 7 (23%) | 12 (36%) | 13 (43%) | 8 (24%) |
1 Median (IQR); n (%) |
tbl_cmh()
tbl_cmh()
The {gtreg} package uses {gtsummary} to construct tables for regulatory agencies.
Adverse Event | Drug A, N = 44 | Drug B, N = 56 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
Grade 1 | Grade 2 | Grade 3 | Grade 4 | Grade 5 | Grade 1 | Grade 2 | Grade 3 | Grade 4 | Grade 5 | |
Blood and lymphatic system disorders | — | 1 (2.3) | — | 1 (2.3) | 1 (2.3) | — | — | — | 1 (1.8) | 6 (11) |
Anaemia | — | — | 1 (2.3) | 1 (2.3) | — | — | — | 1 (1.8) | 1 (1.8) | 3 (5.4) |
Increased tendency to bruise | — | — | — | 1 (2.3) | — | — | — | — | 3 (5.4) | 2 (3.6) |
Iron deficiency anaemia | — | — | — | 1 (2.3) | 1 (2.3) | 1 (1.8) | 2 (3.6) | — | 1 (1.8) | 1 (1.8) |
Thrombocytopenia | — | 1 (2.3) | — | 1 (2.3) | — | — | — | 3 (5.4) | — | 4 (7.1) |
Gastrointestinal disorders | — | — | — | 2 (4.5) | 1 (2.3) | — | — | — | 2 (3.6) | 5 (8.9) |
Difficult digestion | — | — | — | 3 (6.8) | — | 1 (1.8) | — | — | — | 1 (1.8) |
Intestinal dilatation | 1 (2.3) | — | — | — | — | 1 (1.8) | 1 (1.8) | — | — | 1 (1.8) |
Myochosis | — | 2 (4.5) | 1 (2.3) | — | — | — | 1 (1.8) | — | 1 (1.8) | 3 (5.4) |
Non-erosive reflux disease | 3 (6.8) | — | — | — | — | 1 (1.8) | — | — | 3 (5.4) | 3 (5.4) |
Pancreatic enzyme abnormality | — | — | 1 (2.3) | 1 (2.3) | 1 (2.3) | 2 (3.6) | 1 (1.8) | 1 (1.8) | 1 (1.8) | — |
A theme is a set of customization preferences that can be easily set and reused.
Themes control default settings for existing functions
Themes control more fine-grained customization not available via arguments or helper functions
Easily use one of the available themes, or create your own
Characteristic | OR1 | 95% CI1 | p-value |
---|---|---|---|
Age | 1.02 | 1.00, 1.04 | 0.091 |
T Stage | |||
T1 | — | — | |
T2 | 0.58 | 0.24, 1.37 | 0.2 |
T3 | 0.94 | 0.39, 2.28 | 0.9 |
T4 | 0.79 | 0.33, 1.90 | 0.6 |
1 OR = Odds Ratio, CI = Confidence Interval |
Characteristic | OR (95% CI)1 | p-value |
---|---|---|
Age | 1.02 (1.00 to 1.04) | 0.091 |
T Stage | ||
T1 | — | |
T2 | 0.58 (0.24 to 1.37) | 0.22 |
T3 | 0.94 (0.39 to 2.28) | 0.89 |
T4 | 0.79 (0.33 to 1.90) | 0.61 |
1 OR = Odds Ratio, CI = Confidence Interval |
Contributions welcome!
特色 | OR1 | 95% CI1 | P 值 |
---|---|---|---|
Age | 1.02 | 1.00, 1.04 | 0.091 |
T Stage | |||
T1 | — | — | |
T2 | 0.58 | 0.24, 1.37 | 0.2 |
T3 | 0.94 | 0.39, 2.28 | 0.9 |
T4 | 0.79 | 0.33, 1.90 | 0.6 |
1 OR=勝算比, CI=信賴區間 |
Language options:
reset_gtsummary_theme()
theme_gtsummary_compact()
tbl_regression(m1, exponentiate = TRUE) |>
modify_caption("Compact Theme")
Characteristic | OR1 | 95% CI1 | p-value |
---|---|---|---|
Age | 1.02 | 1.00, 1.04 | 0.091 |
T Stage | |||
T1 | — | — | |
T2 | 0.58 | 0.24, 1.37 | 0.2 |
T3 | 0.94 | 0.39, 2.28 | 0.9 |
T4 | 0.79 | 0.33, 1.90 | 0.6 |
1 OR = Odds Ratio, CI = Confidence Interval |
Reduces padding and font size
set_gtsummary_theme()
to use a custom theme.
See the {gtsummary} + themes vignette for examples
http://www.danieldsjoberg.com/gtsummary/articles/themes.html
Use any print engine to customize table
http://www.danieldsjoberg.com/bstfun/
Daniel D. Sjoberg
Michael Curry
Joseph Larmarange
Jessica Lavery
Karissa Whiting
Emily C. Zabor
Xing Bai
Esther Drill
Jessica Flynn
Margie Hannum
Stephanie Lobaugh
Shannon Pileggi
Amy Tin
Gustavo Zapata Wainberg
@ablack3, @ABorakati, @aghaynes, @ahinton-mmc, @aito123, @akarsteve, @akefley, @albertostefanelli, @alexis-catherine, @amygimma, @anaavu, @andrader, @angelgar, @arbet003, @arnmayer, @aspina7, @asshah4, @awcm0n, @barthelmes, @bcjaeger, @BeauMeche, @benediktclaus, @berg-michael, @bhattmaulik, @BioYork, @brachem-christian, @bwiernik, @bx259, @calebasaraba, @CarolineXGao, @ChongTienGoh, @Chris-M-P, @chrisleitzinger, @cjprobst, @clmawhorter, @CodieMonster, @coeus-analytics, @coreysparks, @ctlamb, @davidgohel, @davidkane9, @dax44, @dchiu911, @ddsjoberg, @DeFilippis, @denis-or, @dereksonderegger, @dieuv0, @discoleo, @djbirke, @dmenne, @ElfatihHasabo, @emilyvertosick, @ercbk, @erikvona, @eweisbrod, @feizhadj, @fh-jsnider, @ge-generation, @ghost, @gjones1219, @gorkang, @GuiMarthe, @hass91, @HichemLa, @hughjonesd, @iaingallagher, @ilyamusabirov, @IndrajeetPatil, @IsadoraBM, @j-tamad, @jalavery, @jeanmanguy, @jemus42, @jenifav, @jennybc, @JeremyPasco, @JesseRop, @jflynn264, @jjallaire, @jmbarajas, @jmbarbone, @JoanneF1229, @joelgautschi, @jojosgithub, @JonGretar, @jordan49er, @jthomasmock, @juseer, @jwilliman, @karissawhiting, @kendonB, @kmdono02, @kwakuduahc1, @lamhine, @larmarange, @leejasme, @loukesio, @lspeetluk, @ltin1214, @lucavd, @LuiNov, @maia-sh, @Marsus1972, @matthieu-faron, @mbac, @mdidish, @MelissaAssel, @michaelcurry1123, @mljaniczek, @moleps, @motocci, @msberends, @mvuorre, @myensr, @MyKo101, @oranwutang, @palantre, @Pascal-Schmidt, @pedersebastian, @perlatex, @philsf, @polc1410, @postgres-newbie, @proshano, @raphidoc, @RaviBot, @rich-iannone, @RiversPharmD, @rmgpanw, @roman2023, @ryzhu75, @sachijay, @saifelayan, @sammo3182, @sandhyapc, @sbalci, @sda030, @shannonpileggi, @shengchaohou, @ShixiangWang, @simonpcouch, @slb2240, @slobaugh, @spiralparagon, @StaffanBetner, @Stephonomon, @storopoli, @szimmer, @tamytsujimoto, @TarJae, @themichjam, @THIB20, @tibirkrajc, @tjmeyers, @tldrcharlene, @tormodb, @toshifumikuroda, @UAB-BST-680, @uakimix, @uriahf, @Valja64, @vvm02, @xkcococo, @yonicd, @yoursdearboy, @zabore, @zachariae, @zaddyzad, @zeyunlu, @zhengnow, @zlkrvsm, @zongell-star, and @Zoulf001.