Intro Thoughts

Status Quo

library(tidyverse)

Experiment

library(gtsummary)

trial |>
  tbl_wide_summary(
    include = c(response, grade),
    statistic = c("{n}", "{p}")
  ) |>
  str()
## List of 6
##  $ table_body   : tibble [5 × 7] (S3: tbl_df/tbl/data.frame)
##   ..$ variable : chr [1:5] "response" "grade" "grade" "grade" ...
##   ..$ var_type : chr [1:5] "dichotomous" "categorical" "categorical" "categorical" ...
##   ..$ var_label: chr [1:5] "Tumor Response" "Grade" "Grade" "Grade" ...
##   ..$ row_type : chr [1:5] "label" "label" "level" "level" ...
##   ..$ label    : chr [1:5] "Tumor Response" "Grade" "I" "II" ...
##   ..$ stat_1   : chr [1:5] "61" NA "68" "68" ...
##   ..$ stat_2   : chr [1:5] "32" NA "34" "34" ...
##  $ table_styling:List of 8
##   ..$ header         : tibble [7 × 11] (S3: tbl_df/tbl/data.frame)
##   .. ..$ column                   : chr [1:7] "variable" "var_type" "var_label" "row_type" ...
##   .. ..$ hide                     : logi [1:7] TRUE TRUE TRUE TRUE FALSE FALSE ...
##   .. ..$ align                    : chr [1:7] "center" "center" "center" "center" ...
##   .. ..$ interpret_label          : chr [1:7] "gt::md" "gt::md" "gt::md" "gt::md" ...
##   .. ..$ label                    : chr [1:7] "variable" "var_type" "var_label" "row_type" ...
##   .. ..$ interpret_spanning_header: chr [1:7] "gt::md" "gt::md" "gt::md" "gt::md" ...
##   .. ..$ spanning_header          : chr [1:7] NA NA NA NA ...
##   .. ..$ modify_stat_N            : int [1:7] 200 200 200 200 200 200 200
##   .. ..$ modify_stat_n            : int [1:7] 200 200 200 200 200 200 200
##   .. ..$ modify_stat_p            : num [1:7] 1 1 1 1 1 1 1
##   .. ..$ modify_stat_level        : chr [1:7] "Overall" "Overall" "Overall" "Overall" ...
##   ..$ footnote       : tibble [0 × 4] (S3: tbl_df/tbl/data.frame)
##   .. ..$ column        : chr(0) 
##   .. ..$ rows          : list()
##   .. ..$ text_interpret: chr(0) 
##   .. ..$ footnote      : chr(0) 
##   ..$ footnote_abbrev: tibble [0 × 4] (S3: tbl_df/tbl/data.frame)
##   .. ..$ column        : chr(0) 
##   .. ..$ rows          : list()
##   .. ..$ text_interpret: chr(0) 
##   .. ..$ footnote      : chr(0) 
##   ..$ text_format    : tibble [0 × 4] (S3: tbl_df/tbl/data.frame)
##   .. ..$ column          : chr(0) 
##   .. ..$ rows            : list()
##   .. ..$ format_type     : chr(0) 
##   .. ..$ undo_text_format: logi(0) 
##   ..$ indent         : tibble [2 × 3] (S3: tbl_df/tbl/data.frame)
##   .. ..$ column  : chr [1:2] "label" "label"
##   .. ..$ rows    :List of 2
##   .. .. ..$ : logi TRUE
##   .. .. ..$ : language ~.data$row_type %in% c("level", "missing")
##   .. .. .. ..- attr(*, ".Environment")=<environment: 0x7fc7aee1d5f8> 
##   .. ..$ n_spaces: int [1:2] 0 4
##   ..$ fmt_missing    : tibble [0 × 3] (S3: tbl_df/tbl/data.frame)
##   .. ..$ column: chr(0) 
##   .. ..$ rows  : list()
##   .. ..$ symbol: chr(0) 
##   ..$ fmt_fun        : tibble [0 × 3] (S3: tbl_df/tbl/data.frame)
##   .. ..$ column : chr(0) 
##   .. ..$ rows   : list()
##   .. ..$ fmt_fun: list()
##   ..$ cols_merge     : tibble [0 × 3] (S3: tbl_df/tbl/data.frame)
##   .. ..$ column : chr(0) 
##   .. ..$ rows   : list()
##   .. ..$ pattern: chr(0) 
##  $ call_list    :List of 2
##   ..$ modify_table_styling: language modify_table_styling(x = x, columns = "label", rows = .data$row_type %in%      c("level", "missing"), label = glu| __truncated__ ...
##   ..$ modify_footnote     : language modify_header(x = modify_table_styling(x, columns = "label", label = glue("**{translate_string('Characteristic')}| __truncated__ ...
##  $ cards        :List of 1
##   ..$ tbl_wide_summary: card [27 × 9] (S3: card/tbl_df/tbl/data.frame)
##   .. ..$ variable      : chr [1:27] "response" "response" "grade" "grade" ...
##   .. ..$ variable_level:List of 27
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : Factor w/ 3 levels "I","II","III": 1
##   .. .. ..$ : Factor w/ 3 levels "I","II","III": 1
##   .. .. ..$ : Factor w/ 3 levels "I","II","III": 1
##   .. .. ..$ : Factor w/ 3 levels "I","II","III": 2
##   .. .. ..$ : Factor w/ 3 levels "I","II","III": 2
##   .. .. ..$ : Factor w/ 3 levels "I","II","III": 2
##   .. .. ..$ : Factor w/ 3 levels "I","II","III": 3
##   .. .. ..$ : Factor w/ 3 levels "I","II","III": 3
##   .. .. ..$ : Factor w/ 3 levels "I","II","III": 3
##   .. .. ..$ : int 1
##   .. .. ..$ : int 1
##   .. .. ..$ : int 1
##   .. ..$ context       : chr [1:27] "attributes" "attributes" "attributes" "attributes" ...
##   .. ..$ stat_name     : chr [1:27] "label" "class" "levels" "class" ...
##   .. ..$ stat_label    : chr [1:27] "Variable Label" "Variable Class" "levels" "Variable Class" ...
##   .. ..$ stat          :List of 27
##   .. .. ..$ : chr "Tumor Response"
##   .. .. ..$ : chr "integer"
##   .. .. ..$ : chr [1:3] "I" "II" "III"
##   .. .. ..$ : chr "factor"
##   .. .. ..$ : chr "Grade"
##   .. .. ..$ : int 200
##   .. .. ..$ : int 7
##   .. .. ..$ : int 193
##   .. .. ..$ : num 0.035
##   .. .. ..$ : num 0.965
##   .. .. ..$ : int 200
##   .. .. ..$ : int 0
##   .. .. ..$ : int 200
##   .. .. ..$ : num 0
##   .. .. ..$ : num 1
##   .. .. ..$ : int 68
##   .. .. ..$ : int 200
##   .. .. ..$ : num 0.34
##   .. .. ..$ : int 68
##   .. .. ..$ : int 200
##   .. .. ..$ : num 0.34
##   .. .. ..$ : int 64
##   .. .. ..$ : int 200
##   .. .. ..$ : num 0.32
##   .. .. ..$ : int 61
##   .. .. ..$ : int 193
##   .. .. ..$ : num 0.316
##   .. ..$ fmt_fn        :List of 27
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ :function (x)  
##   .. .. ..$ :function (x)  
##   .. .. ..$ :function (x)  
##   .. .. ..$ :function (x)  
##   .. .. ..$ :function (x)  
##   .. .. ..$ :function (x)  
##   .. .. ..$ :function (x)  
##   .. .. ..$ :function (x)  
##   .. .. ..$ :function (x)  
##   .. .. ..$ :function (x)  
##   .. .. ..$ :function (x)  
##   .. .. ..$ : int 0
##   .. .. ..$ :function (x)  
##   .. .. ..$ :function (x)  
##   .. .. ..$ : int 0
##   .. .. ..$ :function (x)  
##   .. .. ..$ :function (x)  
##   .. .. ..$ : int 0
##   .. .. ..$ :function (x)  
##   .. .. ..$ :function (x)  
##   .. .. ..$ : int 0
##   .. .. ..$ :function (x)  
##   .. ..$ warning       :List of 27
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. ..$ error         :List of 27
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##   .. .. ..$ : NULL
##  $ inputs       :List of 8
##   ..$ data     : tibble [200 × 8] (S3: tbl_df/tbl/data.frame)
##   .. ..$ trt     : chr [1:200] "Drug A" "Drug B" "Drug A" "Drug A" ...
##   .. .. ..- attr(*, "label")= chr "Chemotherapy Treatment"
##   .. ..$ age     : num [1:200] 23 9 31 NA 51 39 37 32 31 34 ...
##   .. .. ..- attr(*, "label")= chr "Age"
##   .. ..$ marker  : num [1:200] 0.16 1.107 0.277 2.067 2.767 ...
##   .. .. ..- attr(*, "label")= chr "Marker Level (ng/mL)"
##   .. ..$ stage   : Factor w/ 4 levels "T1","T2","T3",..: 1 2 1 3 4 4 1 1 1 3 ...
##   .. .. ..- attr(*, "label")= chr "T Stage"
##   .. ..$ grade   : Factor w/ 3 levels "I","II","III": 2 1 2 3 3 1 2 1 2 1 ...
##   .. .. ..- attr(*, "label")= chr "Grade"
##   .. ..$ response: int [1:200] 0 1 0 1 1 0 0 0 0 0 ...
##   .. .. ..- attr(*, "label")= chr "Tumor Response"
##   .. ..$ death   : int [1:200] 0 0 0 1 1 1 0 1 0 1 ...
##   .. .. ..- attr(*, "label")= chr "Patient Died"
##   .. ..$ ttdeath : num [1:200] 24 24 24 17.6 16.4 ...
##   .. .. ..- attr(*, "label")= chr "Months to Death/Censor"
##   ..$ label    : list()
##   ..$ statistic:List of 2
##   .. ..$ response: chr [1:2] "{n}" "{p}"
##   .. .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 
##   .. ..$ grade   : chr [1:2] "{n}" "{p}"
##   .. .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 
##   ..$ digits   :List of 2
##   .. ..$ response:List of 7
##   .. .. ..$ n        :function (x)  
##   .. .. ..$ p        :function (x)  
##   .. .. ..$ N_obs    :function (x)  
##   .. .. ..$ N_miss   :function (x)  
##   .. .. ..$ N_nonmiss:function (x)  
##   .. .. ..$ p_miss   :function (x)  
##   .. .. ..$ p_nonmiss:function (x)  
##   .. ..$ grade   :List of 7
##   .. .. ..$ n        :function (x)  
##   .. .. ..$ p        :function (x)  
##   .. .. ..$ N_obs    :function (x)  
##   .. .. ..$ N_miss   :function (x)  
##   .. .. ..$ N_nonmiss:function (x)  
##   .. .. ..$ p_miss   :function (x)  
##   .. .. ..$ p_nonmiss:function (x)  
##   ..$ type     :List of 2
##   .. ..$ response: chr "dichotomous"
##   .. ..$ grade   : chr "categorical"
##   ..$ value    :List of 2
##   .. ..$ response: int 1
##   .. ..$ grade   : NULL
##   ..$ sort     :List of 1
##   .. ..$ grade: chr "alphanumeric"
##   ..$ include  : chr [1:2] "response" "grade"
##  $              :List of 1
##   ..$ tbl_wide_summary: language tbl_wide_summary(data = trial, statistic = c("{n}", "{p}"), include = c(response,      grade))
##  - attr(*, "class")= chr [1:2] "tbl_wide_summary" "gtsummary"
trial |>
  tbl_wide_summary(
    include = c(age, marker),
    statistic = c("{median}", "{p25}, {p75}")
  ) ->
out
trial |>
  tbl_summary(
    include = age,
    type = all_continuous() ~ "continuous2",
    statistic = all_continuous() ~ c("{mean} ({sd})",
                                     "{median} ({p25}, {p75})",
                                     "{min}, {max}"),
    digits = age ~ list(sd = 2), # show the SD to 2 decimal places
    missing = "no"
  ) ->
out

trial |>
 tbl_summary(
    include = c(age, grade, response),
    by = trt, # split table by group
    missing = "no" # dont list missing data separately
  ) |>
  add_n() %>% # add column with total number of non-missing observations
  modify_header(label = "**Variable**") %>% # update the column header
  bold_labels() ->
gtstable
names(gtstable)
## [1] "table_body"    "table_styling" "call_list"     "cards"        
## [5] "inputs"
str(gtstable$table_body)
## tibble [6 × 8] (S3: tbl_df/tbl/data.frame)
##  $ variable : chr [1:6] "age" "grade" "grade" "grade" ...
##  $ var_type : chr [1:6] "continuous" "categorical" "categorical" "categorical" ...
##  $ row_type : chr [1:6] "label" "label" "level" "level" ...
##  $ var_label: chr [1:6] "Age" "Grade" "Grade" "Grade" ...
##  $ label    : chr [1:6] "Age" "Grade" "I" "II" ...
##  $ n        : chr [1:6] "189" "200" NA NA ...
##  $ stat_1   : chr [1:6] "46 (37, 60)" NA "35 (36%)" "32 (33%)" ...
##  $ stat_2   : chr [1:6] "48 (39, 56)" NA "33 (32%)" "36 (35%)" ...
str(gtstable$table_styling)
## List of 8
##  $ header         : tibble [8 × 11] (S3: tbl_df/tbl/data.frame)
##   ..$ column                   : chr [1:8] "variable" "var_type" "row_type" "var_label" ...
##   ..$ hide                     : logi [1:8] TRUE TRUE TRUE TRUE FALSE FALSE ...
##   ..$ align                    : chr [1:8] "center" "center" "center" "center" ...
##   ..$ interpret_label          : chr [1:8] "gt::md" "gt::md" "gt::md" "gt::md" ...
##   ..$ label                    : chr [1:8] "variable" "var_type" "row_type" "var_label" ...
##   ..$ interpret_spanning_header: chr [1:8] "gt::md" "gt::md" "gt::md" "gt::md" ...
##   ..$ spanning_header          : chr [1:8] NA NA NA NA ...
##   ..$ modify_stat_N            : int [1:8] 200 200 200 200 200 NA 200 200
##   ..$ modify_stat_n            : int [1:8] NA NA NA NA NA NA 98 102
##   ..$ modify_stat_p            : num [1:8] NA NA NA NA NA NA 0.49 0.51
##   ..$ modify_stat_level        : chr [1:8] NA NA NA NA ...
##  $ footnote       : tibble [2 × 4] (S3: tbl_df/tbl/data.frame)
##   ..$ column        : chr [1:2] "stat_1" "stat_2"
##   ..$ rows          :List of 2
##   .. ..$ : language ~NULL
##   .. .. ..- attr(*, ".Environment")=<environment: R_EmptyEnv> 
##   .. ..$ : language ~NULL
##   .. .. ..- attr(*, ".Environment")=<environment: R_EmptyEnv> 
##   ..$ text_interpret: chr [1:2] "gt::md" "gt::md"
##   ..$ footnote      : chr [1:2] "Median (Q1, Q3); n (%)" "Median (Q1, Q3); n (%)"
##  $ footnote_abbrev: tibble [0 × 4] (S3: tbl_df/tbl/data.frame)
##   ..$ column        : chr(0) 
##   ..$ rows          : list()
##   ..$ text_interpret: chr(0) 
##   ..$ footnote      : chr(0) 
##  $ text_format    : tibble [1 × 4] (S3: tbl_df/tbl/data.frame)
##   ..$ column          : chr "label"
##   ..$ rows            :List of 1
##   .. ..$ : language ~.data$row_type == "label"
##   .. .. ..- attr(*, ".Environment")=<environment: 0x7fc7ad569720> 
##   ..$ format_type     : chr "bold"
##   ..$ undo_text_format: logi FALSE
##  $ indent         : tibble [2 × 3] (S3: tbl_df/tbl/data.frame)
##   ..$ column  : chr [1:2] "label" "label"
##   ..$ rows    :List of 2
##   .. ..$ : logi TRUE
##   .. ..$ : language ~.data$row_type %in% c("level", "missing")
##   .. .. ..- attr(*, ".Environment")=<environment: 0x7fc7b02c1210> 
##   ..$ n_spaces: int [1:2] 0 4
##  $ fmt_missing    : tibble [0 × 3] (S3: tbl_df/tbl/data.frame)
##   ..$ column: chr(0) 
##   ..$ rows  : list()
##   ..$ symbol: chr(0) 
##  $ fmt_fun        : tibble [0 × 3] (S3: tbl_df/tbl/data.frame)
##   ..$ column : chr(0) 
##   ..$ rows   : list()
##   ..$ fmt_fun: list()
##  $ cols_merge     : tibble [0 × 3] (S3: tbl_df/tbl/data.frame)
##   ..$ column : chr(0) 
##   ..$ rows   : list()
##   ..$ pattern: chr(0)
str(gtstable$call_list)
## List of 4
##  $ tbl_summary    : language tbl_summary(data = trial, by = trt, missing = "no", include = c(age, grade,      response))
##  $ add_n          : language add_n.tbl_summary(x = tbl_summary(trial, include = c(age, grade, response),      by = trt, missing = "no"))
##  $ modify_footnote: language modify_header(x = ., label = "**Variable**")
##  $ bold_labels    : language bold_labels.gtsummary(x = .)
str(gtstable$cards)
## List of 2
##  $ tbl_summary: card [75 × 12] (S3: card/tbl_df/tbl/data.frame)
##   ..$ group1        : chr [1:75] NA NA NA NA ...
##   ..$ group1_level  :List of 75
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : chr "Drug A"
##   .. ..$ : chr "Drug A"
##   .. ..$ : chr "Drug A"
##   .. ..$ : chr "Drug A"
##   .. ..$ : chr "Drug A"
##   .. ..$ : chr "Drug A"
##   .. ..$ : chr "Drug A"
##   .. ..$ : chr "Drug A"
##   .. ..$ : chr "Drug A"
##   .. ..$ : chr "Drug A"
##   .. ..$ : chr "Drug A"
##   .. ..$ : chr "Drug A"
##   .. ..$ : chr "Drug A"
##   .. ..$ : chr "Drug A"
##   .. ..$ : chr "Drug A"
##   .. ..$ : chr "Drug B"
##   .. ..$ : chr "Drug B"
##   .. ..$ : chr "Drug B"
##   .. ..$ : chr "Drug B"
##   .. ..$ : chr "Drug B"
##   .. ..$ : chr "Drug B"
##   .. ..$ : chr "Drug B"
##   .. ..$ : chr "Drug B"
##   .. ..$ : chr "Drug B"
##   .. ..$ : chr "Drug B"
##   .. ..$ : chr "Drug B"
##   .. ..$ : chr "Drug B"
##   .. ..$ : chr "Drug B"
##   .. ..$ : chr "Drug B"
##   .. ..$ : chr "Drug B"
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : chr "Drug A"
##   .. ..$ : chr "Drug A"
##   .. ..$ : chr "Drug A"
##   .. ..$ : chr "Drug B"
##   .. ..$ : chr "Drug B"
##   .. ..$ : chr "Drug B"
##   .. ..$ : chr "Drug A"
##   .. ..$ : chr "Drug A"
##   .. ..$ : chr "Drug A"
##   .. ..$ : chr "Drug B"
##   .. ..$ : chr "Drug B"
##   .. ..$ : chr "Drug B"
##   .. ..$ : chr "Drug A"
##   .. ..$ : chr "Drug A"
##   .. ..$ : chr "Drug A"
##   .. ..$ : chr "Drug B"
##   .. ..$ : chr "Drug B"
##   .. ..$ : chr "Drug B"
##   .. ..$ : chr "Drug A"
##   .. ..$ : chr "Drug A"
##   .. ..$ : chr "Drug A"
##   .. ..$ : chr "Drug B"
##   .. ..$ : chr "Drug B"
##   .. ..$ : chr "Drug B"
##   .. ..$ : chr "Drug A"
##   .. ..$ : chr "Drug A"
##   .. ..$ : chr "Drug A"
##   .. ..$ : chr "Drug B"
##   .. ..$ : chr "Drug B"
##   .. ..$ : chr "Drug B"
##   ..$ variable      : chr [1:75] "age" "age" "grade" "grade" ...
##   ..$ variable_level:List of 75
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : chr "Drug A"
##   .. ..$ : chr "Drug A"
##   .. ..$ : chr "Drug A"
##   .. ..$ : chr "Drug B"
##   .. ..$ : chr "Drug B"
##   .. ..$ : chr "Drug B"
##   .. ..$ : Factor w/ 3 levels "I","II","III": 1
##   .. ..$ : Factor w/ 3 levels "I","II","III": 1
##   .. ..$ : Factor w/ 3 levels "I","II","III": 1
##   .. ..$ : Factor w/ 3 levels "I","II","III": 1
##   .. ..$ : Factor w/ 3 levels "I","II","III": 1
##   .. ..$ : Factor w/ 3 levels "I","II","III": 1
##   .. ..$ : Factor w/ 3 levels "I","II","III": 2
##   .. ..$ : Factor w/ 3 levels "I","II","III": 2
##   .. ..$ : Factor w/ 3 levels "I","II","III": 2
##   .. ..$ : Factor w/ 3 levels "I","II","III": 2
##   .. ..$ : Factor w/ 3 levels "I","II","III": 2
##   .. ..$ : Factor w/ 3 levels "I","II","III": 2
##   .. ..$ : Factor w/ 3 levels "I","II","III": 3
##   .. ..$ : Factor w/ 3 levels "I","II","III": 3
##   .. ..$ : Factor w/ 3 levels "I","II","III": 3
##   .. ..$ : Factor w/ 3 levels "I","II","III": 3
##   .. ..$ : Factor w/ 3 levels "I","II","III": 3
##   .. ..$ : Factor w/ 3 levels "I","II","III": 3
##   .. ..$ : int 1
##   .. ..$ : int 1
##   .. ..$ : int 1
##   .. ..$ : int 1
##   .. ..$ : int 1
##   .. ..$ : int 1
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   ..$ context       : chr [1:75] "attributes" "attributes" "attributes" "attributes" ...
##   ..$ stat_name     : chr [1:75] "label" "class" "levels" "class" ...
##   ..$ stat_label    : chr [1:75] "Variable Label" "Variable Class" "levels" "Variable Class" ...
##   ..$ stat          :List of 75
##   .. ..$ : chr "Age"
##   .. ..$ : chr "numeric"
##   .. ..$ : chr [1:3] "I" "II" "III"
##   .. ..$ : chr "factor"
##   .. ..$ : chr "Grade"
##   .. ..$ : chr "Tumor Response"
##   .. ..$ : chr "integer"
##   .. ..$ : chr "Chemotherapy Treatment"
##   .. ..$ : chr "character"
##   .. ..$ : int 98
##   .. ..$ : int 7
##   .. ..$ : int 91
##   .. ..$ : num 0.0714
##   .. ..$ : num 0.929
##   .. ..$ : int 98
##   .. ..$ : int 0
##   .. ..$ : int 98
##   .. ..$ : num 0
##   .. ..$ : num 1
##   .. ..$ : int 98
##   .. ..$ : int 3
##   .. ..$ : int 95
##   .. ..$ : num 0.0306
##   .. ..$ : num 0.969
##   .. ..$ : int 102
##   .. ..$ : int 4
##   .. ..$ : int 98
##   .. ..$ : num 0.0392
##   .. ..$ : num 0.961
##   .. ..$ : int 102
##   .. ..$ : int 0
##   .. ..$ : int 102
##   .. ..$ : num 0
##   .. ..$ : num 1
##   .. ..$ : int 102
##   .. ..$ : int 4
##   .. ..$ : int 98
##   .. ..$ : num 0.0392
##   .. ..$ : num 0.961
##   .. ..$ : int 98
##   .. ..$ : int 200
##   .. ..$ : num 0.49
##   .. ..$ : int 102
##   .. ..$ : int 200
##   .. ..$ : num 0.51
##   .. ..$ : int 35
##   .. ..$ : int 98
##   .. ..$ : num 0.357
##   .. ..$ : int 33
##   .. ..$ : int 102
##   .. ..$ : num 0.324
##   .. ..$ : int 32
##   .. ..$ : int 98
##   .. ..$ : num 0.327
##   .. ..$ : int 36
##   .. ..$ : int 102
##   .. ..$ : num 0.353
##   .. ..$ : int 31
##   .. ..$ : int 98
##   .. ..$ : num 0.316
##   .. ..$ : int 33
##   .. ..$ : int 102
##   .. ..$ : num 0.324
##   .. ..$ : int 28
##   .. ..$ : int 95
##   .. ..$ : num 0.295
##   .. ..$ : int 33
##   .. ..$ : int 98
##   .. ..$ : num 0.337
##   .. ..$ : num 46
##   .. ..$ : num 37
##   .. ..$ : num 60
##   .. ..$ : num 48
##   .. ..$ : num 39
##   .. ..$ : num 56
##   ..$ fmt_fn        :List of 75
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ : int 0
##   .. ..$ : int 0
##   .. ..$ :function (x)  
##   .. ..$ : int 0
##   .. ..$ : int 0
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ : int 0
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ : int 0
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ : int 0
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ : int 0
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ : int 0
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ : int 0
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ : int 0
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ : int 0
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   ..$ warning       :List of 75
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   ..$ error         :List of 75
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   ..$ gts_column    : chr [1:75] NA NA NA NA ...
##  $ add_n      : card [15 × 9] (S3: card/tbl_df/tbl/data.frame)
##   ..$ variable  : chr [1:15] "age" "age" "age" "age" ...
##   ..$ context   : chr [1:15] "missing" "missing" "missing" "missing" ...
##   ..$ stat_name : chr [1:15] "N_obs" "N_miss" "N_nonmiss" "p_miss" ...
##   ..$ stat_label: chr [1:15] "Vector Length" "N Missing" "N Non-missing" "% Missing" ...
##   ..$ stat      :List of 15
##   .. ..$ : int 200
##   .. ..$ : int 11
##   .. ..$ : int 189
##   .. ..$ : num 0.055
##   .. ..$ : num 0.945
##   .. ..$ : int 200
##   .. ..$ : int 0
##   .. ..$ : int 200
##   .. ..$ : num 0
##   .. ..$ : num 1
##   .. ..$ : int 200
##   .. ..$ : int 7
##   .. ..$ : int 193
##   .. ..$ : num 0.035
##   .. ..$ : num 0.965
##   ..$ stat_fmt  :List of 15
##   .. ..$ : chr "200"
##   .. ..$ : chr "11"
##   .. ..$ : chr "189"
##   .. ..$ : chr "5.5"
##   .. ..$ : chr "95"
##   .. ..$ : chr "200"
##   .. ..$ : chr "0"
##   .. ..$ : chr "200"
##   .. ..$ : chr "0"
##   .. ..$ : chr "100"
##   .. ..$ : chr "200"
##   .. ..$ : chr "7"
##   .. ..$ : chr "193"
##   .. ..$ : chr "3.5"
##   .. ..$ : chr "97"
##   ..$ fmt_fn    :List of 15
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   .. ..$ :function (x)  
##   ..$ warning   :List of 15
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   ..$ error     :List of 15
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
##   .. ..$ : NULL
str(gtstable$inputs)
## List of 13
##  $ data        : tibble [200 × 8] (S3: tbl_df/tbl/data.frame)
##   ..$ trt     : chr [1:200] "Drug A" "Drug B" "Drug A" "Drug A" ...
##   .. ..- attr(*, "label")= chr "Chemotherapy Treatment"
##   ..$ age     : num [1:200] 23 9 31 NA 51 39 37 32 31 34 ...
##   .. ..- attr(*, "label")= chr "Age"
##   ..$ marker  : num [1:200] 0.16 1.107 0.277 2.067 2.767 ...
##   .. ..- attr(*, "label")= chr "Marker Level (ng/mL)"
##   ..$ stage   : Factor w/ 4 levels "T1","T2","T3",..: 1 2 1 3 4 4 1 1 1 3 ...
##   .. ..- attr(*, "label")= chr "T Stage"
##   ..$ grade   : Factor w/ 3 levels "I","II","III": 2 1 2 3 3 1 2 1 2 1 ...
##   .. ..- attr(*, "label")= chr "Grade"
##   ..$ response: int [1:200] 0 1 0 1 1 0 0 0 0 0 ...
##   .. ..- attr(*, "label")= chr "Tumor Response"
##   ..$ death   : int [1:200] 0 0 0 1 1 1 0 1 0 1 ...
##   .. ..- attr(*, "label")= chr "Patient Died"
##   ..$ ttdeath : num [1:200] 24 24 24 17.6 16.4 ...
##   .. ..- attr(*, "label")= chr "Months to Death/Censor"
##  $ by          : chr "trt"
##  $ label       : list()
##  $ statistic   :List of 3
##   ..$ age     : chr "{median} ({p25}, {p75})"
##   .. ..- attr(*, ".Environment")=<environment: 0x7fc7aea168e0> 
##   ..$ grade   : chr "{n} ({p}%)"
##   .. ..- attr(*, ".Environment")=<environment: 0x7fc7aea168e0> 
##   ..$ response: chr "{n} ({p}%)"
##   .. ..- attr(*, ".Environment")=<environment: 0x7fc7aea168e0> 
##  $ digits      :List of 3
##   ..$ age     :List of 8
##   .. ..$ median   :function (x)  
##   .. ..$ p25      :function (x)  
##   .. ..$ p75      :function (x)  
##   .. ..$ N_obs    :function (x)  
##   .. ..$ N_miss   :function (x)  
##   .. ..$ N_nonmiss:function (x)  
##   .. ..$ p_miss   :function (x)  
##   .. ..$ p_nonmiss:function (x)  
##   ..$ grade   :List of 7
##   .. ..$ n        :function (x)  
##   .. ..$ p        :function (x)  
##   .. ..$ N_obs    :function (x)  
##   .. ..$ N_miss   :function (x)  
##   .. ..$ N_nonmiss:function (x)  
##   .. ..$ p_miss   :function (x)  
##   .. ..$ p_nonmiss:function (x)  
##   ..$ response:List of 7
##   .. ..$ n        :function (x)  
##   .. ..$ p        :function (x)  
##   .. ..$ N_obs    :function (x)  
##   .. ..$ N_miss   :function (x)  
##   .. ..$ N_nonmiss:function (x)  
##   .. ..$ p_miss   :function (x)  
##   .. ..$ p_nonmiss:function (x)  
##  $ type        :List of 3
##   ..$ age     : chr "continuous"
##   ..$ grade   : chr "categorical"
##   ..$ response: chr "dichotomous"
##  $ value       :List of 3
##   ..$ age     : NULL
##   ..$ grade   : NULL
##   ..$ response: int 1
##  $ missing     : chr "no"
##  $ missing_text: chr "Unknown"
##  $ missing_stat: chr "{N_miss}"
##  $ sort        :List of 1
##   ..$ grade: chr "alphanumeric"
##  $ percent     : chr "column"
##  $ include     : chr [1:3] "age" "grade" "response"

Closing remarks, Other Relevant Work, Caveats