Returns a data frame corresponding to a descriptive table.

rm_covsum(
  data,
  covs = NULL,
  maincov = NULL,
  caption = NULL,
  tableOnly = FALSE,
  covTitle = "",
  digits = 1,
  digits.cat = 0,
  nicenames = TRUE,
  IQR = FALSE,
  all.stats = FALSE,
  pvalue = TRUE,
  effSize = FALSE,
  p.adjust = "none",
  unformattedp = FALSE,
  show.tests = FALSE,
  testcont = c("rank-sum test", "ANOVA"),
  testcat = c("Chi-squared", "Fisher"),
  full = TRUE,
  include_missing = FALSE,
  percentage = c("column", "row"),
  dropLevels = TRUE,
  excludeLevels = NULL,
  numobs = NULL,
  fontsize,
  chunk_label,
  xvars = NULL,
  grp = NULL
)

Arguments

data

dataframe containing data

covs

Covariate names to summarize. Accepts either a character vector (e.g., c("age", "sex")) or tidyselect bare names (e.g., c(age, sex)). Can also be specified using the xvars alias.

maincov

Grouping variable. Accepts either a character string (e.g., "sex") or a tidyselect bare name (e.g., sex). Can also be specified using the grp alias.

caption

character containing table caption (default is no caption)

tableOnly

Logical, if TRUE then a dataframe is returned, otherwise a formatted printed object is returned (default).

covTitle

character with the names of the covariate (predictor) column. The default is to leave this empty for output or, for table only output to use the column name 'Covariate'.

digits

number of digits for summarizing mean data

digits.cat

number of digits for the proportions when summarizing categorical data (default: 0)

nicenames

boolean indicating if you want to replace . and _ in strings with a space

IQR

boolean indicating if you want to display the inter quantile range (Q1,Q3) as opposed to (min,max) in the summary for continuous variables

all.stats

boolean indicating if all summary statistics (Q1,Q3 + min,max on a separate line) should be displayed. Overrides IQR.

pvalue

boolean indicating if you want p-values included in the table

effSize

boolean indicating if you want effect sizes included in the table. Can only be obtained if pvalue is also requested. Effect sizes calculated include Cramer's V for categorical variables, Cohen's d, Wilcoxon r, or Eta-squared for numeric/continuous variables.

p.adjust

p-adjustments to be performed. Uses the p.adjust function from base R

unformattedp

boolean indicating if you would like the p-value to be returned unformatted (ie not rounded or prefixed with '<'). Best used with tableOnly = T and outTable function. See examples.

show.tests

boolean indicating if the type of statistical test and effect size used should be shown in a column beside the pvalues. Ignored if pvalue=FALSE.

testcont

test of choice for continuous variables,one of rank-sum (default) or ANOVA

testcat

test of choice for categorical variables,one of Chi-squared (default) or Fisher

full

boolean indicating if you want the full sample included in the table, ignored if maincov is NULL

include_missing

Option to include NA values of maincov. NAs will not be included in statistical tests

percentage

choice of how percentages are presented, one of column (default) or row

dropLevels

logical, indicating if empty factor levels be dropped from the output, default is TRUE.

excludeLevels

a named list of covariate levels to exclude from statistical tests in the form list(varname =c('level1','level2')). These levels will be excluded from association tests, but not the table. This can be useful for levels where there is a logical skip (ie not missing, but not presented). Ignored if pvalue=FALSE.

numobs

named list overriding the number of people you expect to have the covariate

fontsize

PDF/HTML output only, manually set the table fontsize

chunk_label

only used if output is to Word to allow cross-referencing

xvars

Alias for covs. Supports tidyselect.

grp

Alias for maincov. Supports tidyselect.

Value

A character vector of the table source code, unless tableOnly=TRUE in which case a data frame is returned

Details

Comparisons for categorical variables default to chi-square tests, but if there are counts of <5 then the Fisher Exact test will be used and if this is unsuccessful then a second attempt will be made computing p-values using MC simulation. If testcont='ANOVA' then the t-test with unequal variance will be used for two groups and an ANOVA will be used for three or more. The statistical test used can be displayed by specifying show.tests=TRUE.

Effect size can be obtained when p-value is requested.

Further formatting options are available using tableOnly=TRUE and outputting the table with a call to outTable.

A newer version of this function is rm_compactsum which is more flexible and displays fewer rows of output.

Tidyselect can be used for covs, maincov, xvars, and grp arguments, allowing bare column names (e.g., c(age, sex)) in addition to character strings (e.g., c("age", "sex")).

References

Ellis, P.D. (2010) The essential guide to effect sizes: statistical power, meta-analysis, and the interpretation of research results. Cambridge: Cambridge University Press.doi:10.1017/CBO9780511761676

Lakens, D. (2013) Calculating and reporting effect sizes to facilitate cumulative science: a practical primer for t-tests and ANOVAs. Frontiers in Psychology, 4; 863:1-12. doi:10.3389/fpsyg.2013.00863

Examples

data("pembrolizumab")
rm_covsum(data=pembrolizumab, maincov = 'orr',
covs=c('age','sex','pdl1','tmb','l_size','change_ctdna_group'),
show.tests=TRUE)
#> <table class="table table" style="margin-left: auto; margin-right: auto; margin-left: auto; margin-right: auto;">
#>  <thead>
#>   <tr>
#>    <th style="text-align:left;position: sticky; top:0; background-color: #FFFFFF;">  </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> Full Sample (n=94) </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> CR/PR (n=16) </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> SD/PD (n=78) </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> p-value </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> StatTest </th>
#>   </tr>
#>  </thead>
#> <tbody>
#>   <tr>
#>    <td style="text-align:left;"> <span style="font-weight: bold;">Age at study entry</span> </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;"> 0.079 </td>
#>    <td style="text-align:right;"> Wilcoxon Rank Sum </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Mean (sd) </td>
#>    <td style="text-align:right;"> 57.9 (12.8) </td>
#>    <td style="text-align:right;"> 62.9 (12.6) </td>
#>    <td style="text-align:right;"> 56.8 (12.6) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Median (Min,Max) </td>
#>    <td style="text-align:right;"> 59.1 (21.1, 81.8) </td>
#>    <td style="text-align:right;"> 68.3 (34.1, 81.8) </td>
#>    <td style="text-align:right;"> 57.5 (21.1, 78.2) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> <span style="font-weight: bold;">Patient Sex</span> </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;"> 0.18 </td>
#>    <td style="text-align:right;"> Chi Sq </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Female </td>
#>    <td style="text-align:right;"> 58 (62) </td>
#>    <td style="text-align:right;"> 7 (44) </td>
#>    <td style="text-align:right;"> 51 (65) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Male </td>
#>    <td style="text-align:right;"> 36 (38) </td>
#>    <td style="text-align:right;"> 9 (56) </td>
#>    <td style="text-align:right;"> 27 (35) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> <span style="font-weight: bold;">PD L1 percent</span> </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;"> <span style="font-weight: bold;">0.019</span> </td>
#>    <td style="text-align:right;"> Wilcoxon Rank Sum </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Mean (sd) </td>
#>    <td style="text-align:right;"> 13.9 (29.2) </td>
#>    <td style="text-align:right;"> 43.3 (46.8) </td>
#>    <td style="text-align:right;"> 7.8 (19.6) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Median (Min,Max) </td>
#>    <td style="text-align:right;"> 0 (0, 100) </td>
#>    <td style="text-align:right;"> 16 (0, 100) </td>
#>    <td style="text-align:right;"> 0 (0, 95) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Missing </td>
#>    <td style="text-align:right;"> 1 </td>
#>    <td style="text-align:right;"> 0 </td>
#>    <td style="text-align:right;"> 1 </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> <span style="font-weight: bold;">log of TMB</span> </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;"> <span style="font-weight: bold;">&lt;0.001</span> </td>
#>    <td style="text-align:right;"> Wilcoxon Rank Sum </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Mean (sd) </td>
#>    <td style="text-align:right;"> 0.9 (1.0) </td>
#>    <td style="text-align:right;"> 1.9 (1.5) </td>
#>    <td style="text-align:right;"> 0.7 (0.7) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Median (Min,Max) </td>
#>    <td style="text-align:right;"> 0.7 (-0.8, 5.2) </td>
#>    <td style="text-align:right;"> 1.9 (-0.8, 5.2) </td>
#>    <td style="text-align:right;"> 0.6 (-0.6, 3.2) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> <span style="font-weight: bold;">Target lesion size at baseline</span> </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;"> 0.11 </td>
#>    <td style="text-align:right;"> Wilcoxon Rank Sum </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Mean (sd) </td>
#>    <td style="text-align:right;"> 87.9 (59.6) </td>
#>    <td style="text-align:right;"> 71.7 (51.3) </td>
#>    <td style="text-align:right;"> 91.3 (60.9) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Median (Min,Max) </td>
#>    <td style="text-align:right;"> 73.5 (11.0, 387.0) </td>
#>    <td style="text-align:right;"> 64 (11, 241) </td>
#>    <td style="text-align:right;"> 77 (12, 387) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> <span style="font-weight: bold;">Did ctDNA increase or decrease from baseline to cycle 3</span> </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;"> <span style="font-weight: bold;">&lt;0.001</span> </td>
#>    <td style="text-align:right;"> Fisher Exact </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Decrease from baseline </td>
#>    <td style="text-align:right;"> 33 (45) </td>
#>    <td style="text-align:right;"> 14 (93) </td>
#>    <td style="text-align:right;"> 19 (33) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Increase from baseline </td>
#>    <td style="text-align:right;"> 40 (55) </td>
#>    <td style="text-align:right;"> 1 (7) </td>
#>    <td style="text-align:right;"> 39 (67) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Missing </td>
#>    <td style="text-align:right;"> 21 </td>
#>    <td style="text-align:right;"> 1 </td>
#>    <td style="text-align:right;"> 20 </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#> </tbody>
#> </table>

# To Show Effect Sizes
rm_covsum(data=pembrolizumab, maincov = 'orr',
covs=c('age','sex'),
effSize=TRUE)
#> <table class="table table" style="margin-left: auto; margin-right: auto; margin-left: auto; margin-right: auto;">
#>  <thead>
#>   <tr>
#>    <th style="text-align:left;position: sticky; top:0; background-color: #FFFFFF;">  </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> Full Sample (n=94) </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> CR/PR (n=16) </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> SD/PD (n=78) </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> p-value </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> Effect Size </th>
#>   </tr>
#>  </thead>
#> <tbody>
#>   <tr>
#>    <td style="text-align:left;"> <span style="font-weight: bold;">Age at study entry</span> </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;"> 0.079 </td>
#>    <td style="text-align:right;"> 0.18 </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Mean (sd) </td>
#>    <td style="text-align:right;"> 57.9 (12.8) </td>
#>    <td style="text-align:right;"> 62.9 (12.6) </td>
#>    <td style="text-align:right;"> 56.8 (12.6) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Median (Min,Max) </td>
#>    <td style="text-align:right;"> 59.1 (21.1, 81.8) </td>
#>    <td style="text-align:right;"> 68.3 (34.1, 81.8) </td>
#>    <td style="text-align:right;"> 57.5 (21.1, 78.2) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> <span style="font-weight: bold;">Patient Sex</span> </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;"> 0.18 </td>
#>    <td style="text-align:right;"> 0.14 </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Female </td>
#>    <td style="text-align:right;"> 58 (62) </td>
#>    <td style="text-align:right;"> 7 (44) </td>
#>    <td style="text-align:right;"> 51 (65) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Male </td>
#>    <td style="text-align:right;"> 36 (38) </td>
#>    <td style="text-align:right;"> 9 (56) </td>
#>    <td style="text-align:right;"> 27 (35) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#> </tbody>
#> </table>

# To make custom changes or change the fontsize in PDF/HTML
tab <- rm_covsum(data=pembrolizumab,maincov = 'change_ctdna_group',
covs=c('age','sex','pdl1','tmb','l_size'),show.tests=TRUE,tableOnly = TRUE)
#> Warning: cannot compute exact p-value with ties
#> Warning: cannot compute exact p-value with ties
outTable(tab, fontsize=7)
#> <table class="table table table" style="margin-left: auto; margin-right: auto; margin-left: auto; margin-right: auto; font-size: 7px; margin-left: auto; margin-right: auto;">
#>  <thead>
#>   <tr>
#>    <th style="text-align:left;position: sticky; top:0; background-color: #FFFFFF;"> Covariate </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> Full Sample (n=73) </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> Decrease from baseline (n=33) </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> Increase from baseline (n=40) </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> p-value </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> StatTest </th>
#>   </tr>
#>  </thead>
#> <tbody>
#>   <tr>
#>    <td style="text-align:left;"> <span style="font-weight: bold;">Age at study entry</span> </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;"> 0.083 </td>
#>    <td style="text-align:right;"> Wilcoxon Rank Sum </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Mean (sd) </td>
#>    <td style="text-align:right;"> 57.9 (13.4) </td>
#>    <td style="text-align:right;"> 61.2 (11.6) </td>
#>    <td style="text-align:right;"> 55.2 (14.3) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Median (Min,Max) </td>
#>    <td style="text-align:right;"> 59.5 (21.1, 81.8) </td>
#>    <td style="text-align:right;"> 65.1 (34.1, 78.2) </td>
#>    <td style="text-align:right;"> 57.0 (21.1, 81.8) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> <span style="font-weight: bold;">Patient Sex</span> </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;"> 0.84 </td>
#>    <td style="text-align:right;"> Chi Sq </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Female </td>
#>    <td style="text-align:right;"> 40 (55) </td>
#>    <td style="text-align:right;"> 19 (58) </td>
#>    <td style="text-align:right;"> 21 (52) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Male </td>
#>    <td style="text-align:right;"> 33 (45) </td>
#>    <td style="text-align:right;"> 14 (42) </td>
#>    <td style="text-align:right;"> 19 (48) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> <span style="font-weight: bold;">PD L1 percent</span> </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;"> 0.26 </td>
#>    <td style="text-align:right;"> Wilcoxon Rank Sum </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Mean (sd) </td>
#>    <td style="text-align:right;"> 15.1 (30.9) </td>
#>    <td style="text-align:right;"> 23.3 (38.1) </td>
#>    <td style="text-align:right;"> 8.3 (21.8) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Median (Min,Max) </td>
#>    <td style="text-align:right;"> 1 (0, 100) </td>
#>    <td style="text-align:right;"> 1 (0, 100) </td>
#>    <td style="text-align:right;"> 0.5 (0.0, 95.0) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> <span style="font-weight: bold;">log of TMB</span> </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;"> 0.42 </td>
#>    <td style="text-align:right;"> Wilcoxon Rank Sum </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Mean (sd) </td>
#>    <td style="text-align:right;"> 1.0 (1.1) </td>
#>    <td style="text-align:right;"> 1.2 (1.3) </td>
#>    <td style="text-align:right;"> 0.8 (0.7) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Median (Min,Max) </td>
#>    <td style="text-align:right;"> 0.7 (-0.8, 5.2) </td>
#>    <td style="text-align:right;"> 0.8 (-0.5, 5.2) </td>
#>    <td style="text-align:right;"> 0.7 (-0.8, 3.2) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> <span style="font-weight: bold;">Target lesion size at baseline</span> </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;"> 0.33 </td>
#>    <td style="text-align:right;"> Wilcoxon Rank Sum </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Mean (sd) </td>
#>    <td style="text-align:right;"> 85.9 (59.9) </td>
#>    <td style="text-align:right;"> 84.1 (71.0) </td>
#>    <td style="text-align:right;"> 87.4 (49.8) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Median (Min,Max) </td>
#>    <td style="text-align:right;"> 73 (11, 387) </td>
#>    <td style="text-align:right;"> 64 (11, 387) </td>
#>    <td style="text-align:right;"> 76.5 (15.0, 267.0) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#> </tbody>
#> </table>

# To return unformatted p-values
tab <- rm_covsum(data=pembrolizumab, maincov = 'orr',
covs=c('age','sex','pdl1','tmb','l_size','change_ctdna_group'),
show.tests=TRUE,unformattedp=TRUE,tableOnly=TRUE)
outTable(tab,digits=5)
#> <table class="table table" style="margin-left: auto; margin-right: auto; margin-left: auto; margin-right: auto;">
#>  <thead>
#>   <tr>
#>    <th style="text-align:left;position: sticky; top:0; background-color: #FFFFFF;"> Covariate </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> Full Sample (n=94) </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> CR/PR (n=16) </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> SD/PD (n=78) </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> p-value </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> StatTest </th>
#>   </tr>
#>  </thead>
#> <tbody>
#>   <tr>
#>    <td style="text-align:left;"> <span style="font-weight: bold;">Age at study entry</span> </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;"> 0.0791626816934507 </td>
#>    <td style="text-align:right;"> Wilcoxon Rank Sum </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Mean (sd) </td>
#>    <td style="text-align:right;"> 57.9 (12.8) </td>
#>    <td style="text-align:right;"> 62.9 (12.6) </td>
#>    <td style="text-align:right;"> 56.8 (12.6) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Median (Min,Max) </td>
#>    <td style="text-align:right;"> 59.1 (21.1, 81.8) </td>
#>    <td style="text-align:right;"> 68.3 (34.1, 81.8) </td>
#>    <td style="text-align:right;"> 57.5 (21.1, 78.2) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> <span style="font-weight: bold;">Patient Sex</span> </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;"> 0.180454582964819 </td>
#>    <td style="text-align:right;"> Chi Sq </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Female </td>
#>    <td style="text-align:right;"> 58 (62) </td>
#>    <td style="text-align:right;"> 7 (44) </td>
#>    <td style="text-align:right;"> 51 (65) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Male </td>
#>    <td style="text-align:right;"> 36 (38) </td>
#>    <td style="text-align:right;"> 9 (56) </td>
#>    <td style="text-align:right;"> 27 (35) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> <span style="font-weight: bold;">PD L1 percent</span> </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;"> <span style="font-weight: bold;">0.0188835157205085</span> </td>
#>    <td style="text-align:right;"> Wilcoxon Rank Sum </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Mean (sd) </td>
#>    <td style="text-align:right;"> 13.9 (29.2) </td>
#>    <td style="text-align:right;"> 43.3 (46.8) </td>
#>    <td style="text-align:right;"> 7.8 (19.6) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Median (Min,Max) </td>
#>    <td style="text-align:right;"> 0 (0, 100) </td>
#>    <td style="text-align:right;"> 16 (0, 100) </td>
#>    <td style="text-align:right;"> 0 (0, 95) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Missing </td>
#>    <td style="text-align:right;"> 1 </td>
#>    <td style="text-align:right;"> 0 </td>
#>    <td style="text-align:right;"> 1 </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> <span style="font-weight: bold;">log of TMB</span> </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;"> <span style="font-weight: bold;">0.000454724186497012</span> </td>
#>    <td style="text-align:right;"> Wilcoxon Rank Sum </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Mean (sd) </td>
#>    <td style="text-align:right;"> 0.9 (1.0) </td>
#>    <td style="text-align:right;"> 1.9 (1.5) </td>
#>    <td style="text-align:right;"> 0.7 (0.7) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Median (Min,Max) </td>
#>    <td style="text-align:right;"> 0.7 (-0.8, 5.2) </td>
#>    <td style="text-align:right;"> 1.9 (-0.8, 5.2) </td>
#>    <td style="text-align:right;"> 0.6 (-0.6, 3.2) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> <span style="font-weight: bold;">Target lesion size at baseline</span> </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;"> 0.114163892248467 </td>
#>    <td style="text-align:right;"> Wilcoxon Rank Sum </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Mean (sd) </td>
#>    <td style="text-align:right;"> 87.9 (59.6) </td>
#>    <td style="text-align:right;"> 71.7 (51.3) </td>
#>    <td style="text-align:right;"> 91.3 (60.9) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Median (Min,Max) </td>
#>    <td style="text-align:right;"> 73.5 (11.0, 387.0) </td>
#>    <td style="text-align:right;"> 64 (11, 241) </td>
#>    <td style="text-align:right;"> 77 (12, 387) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> <span style="font-weight: bold;">Did ctDNA increase or decrease from baseline to cycle 3</span> </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;"> <span style="font-weight: bold;">2.32345658128899e-05</span> </td>
#>    <td style="text-align:right;"> Fisher Exact </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Decrease from baseline </td>
#>    <td style="text-align:right;"> 33 (45) </td>
#>    <td style="text-align:right;"> 14 (93) </td>
#>    <td style="text-align:right;"> 19 (33) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Increase from baseline </td>
#>    <td style="text-align:right;"> 40 (55) </td>
#>    <td style="text-align:right;"> 1 (7) </td>
#>    <td style="text-align:right;"> 39 (67) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Missing </td>
#>    <td style="text-align:right;"> 21 </td>
#>    <td style="text-align:right;"> 1 </td>
#>    <td style="text-align:right;"> 20 </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#> </tbody>
#> </table>
outTable(tab,digits=5, applyAttributes=FALSE) # remove bold/indent
#> <table class="table table" style="margin-left: auto; margin-right: auto; margin-left: auto; margin-right: auto;">
#>  <thead>
#>   <tr>
#>    <th style="text-align:left;position: sticky; top:0; background-color: #FFFFFF;"> Covariate </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> Full Sample (n=94) </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> CR/PR (n=16) </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> SD/PD (n=78) </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> p-value </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> StatTest </th>
#>   </tr>
#>  </thead>
#> <tbody>
#>   <tr>
#>    <td style="text-align:left;"> Age at study entry </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;"> 0.0791626816934507 </td>
#>    <td style="text-align:right;"> Wilcoxon Rank Sum </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> Mean (sd) </td>
#>    <td style="text-align:right;"> 57.9 (12.8) </td>
#>    <td style="text-align:right;"> 62.9 (12.6) </td>
#>    <td style="text-align:right;"> 56.8 (12.6) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> Median (Min,Max) </td>
#>    <td style="text-align:right;"> 59.1 (21.1, 81.8) </td>
#>    <td style="text-align:right;"> 68.3 (34.1, 81.8) </td>
#>    <td style="text-align:right;"> 57.5 (21.1, 78.2) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> Patient Sex </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;"> 0.180454582964819 </td>
#>    <td style="text-align:right;"> Chi Sq </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> Female </td>
#>    <td style="text-align:right;"> 58 (62) </td>
#>    <td style="text-align:right;"> 7 (44) </td>
#>    <td style="text-align:right;"> 51 (65) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> Male </td>
#>    <td style="text-align:right;"> 36 (38) </td>
#>    <td style="text-align:right;"> 9 (56) </td>
#>    <td style="text-align:right;"> 27 (35) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> PD L1 percent </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;"> 0.0188835157205085 </td>
#>    <td style="text-align:right;"> Wilcoxon Rank Sum </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> Mean (sd) </td>
#>    <td style="text-align:right;"> 13.9 (29.2) </td>
#>    <td style="text-align:right;"> 43.3 (46.8) </td>
#>    <td style="text-align:right;"> 7.8 (19.6) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> Median (Min,Max) </td>
#>    <td style="text-align:right;"> 0 (0, 100) </td>
#>    <td style="text-align:right;"> 16 (0, 100) </td>
#>    <td style="text-align:right;"> 0 (0, 95) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> Missing </td>
#>    <td style="text-align:right;"> 1 </td>
#>    <td style="text-align:right;"> 0 </td>
#>    <td style="text-align:right;"> 1 </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> log of TMB </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;"> 0.000454724186497012 </td>
#>    <td style="text-align:right;"> Wilcoxon Rank Sum </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> Mean (sd) </td>
#>    <td style="text-align:right;"> 0.9 (1.0) </td>
#>    <td style="text-align:right;"> 1.9 (1.5) </td>
#>    <td style="text-align:right;"> 0.7 (0.7) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> Median (Min,Max) </td>
#>    <td style="text-align:right;"> 0.7 (-0.8, 5.2) </td>
#>    <td style="text-align:right;"> 1.9 (-0.8, 5.2) </td>
#>    <td style="text-align:right;"> 0.6 (-0.6, 3.2) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> Target lesion size at baseline </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;"> 0.114163892248467 </td>
#>    <td style="text-align:right;"> Wilcoxon Rank Sum </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> Mean (sd) </td>
#>    <td style="text-align:right;"> 87.9 (59.6) </td>
#>    <td style="text-align:right;"> 71.7 (51.3) </td>
#>    <td style="text-align:right;"> 91.3 (60.9) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> Median (Min,Max) </td>
#>    <td style="text-align:right;"> 73.5 (11.0, 387.0) </td>
#>    <td style="text-align:right;"> 64 (11, 241) </td>
#>    <td style="text-align:right;"> 77 (12, 387) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> Did ctDNA increase or decrease from baseline to cycle 3 </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;"> 2.32345658128899e-05 </td>
#>    <td style="text-align:right;"> Fisher Exact </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> Decrease from baseline </td>
#>    <td style="text-align:right;"> 33 (45) </td>
#>    <td style="text-align:right;"> 14 (93) </td>
#>    <td style="text-align:right;"> 19 (33) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> Increase from baseline </td>
#>    <td style="text-align:right;"> 40 (55) </td>
#>    <td style="text-align:right;"> 1 (7) </td>
#>    <td style="text-align:right;"> 39 (67) </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> Missing </td>
#>    <td style="text-align:right;"> 21 </td>
#>    <td style="text-align:right;"> 1 </td>
#>    <td style="text-align:right;"> 20 </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>   </tr>
#> </tbody>
#> </table>