This is a wrapper function around the survdiff function to display overall event rates and group-specific rates along with the log-rank test of a difference in survival between groups in a single table suitable for markdown output. Median survival times are included by default but can be removed setting median=FALSE

rm_survdiff(
  data,
  time,
  status,
  covs,
  strata,
  includeVarNames = FALSE,
  digits = 1,
  showCols = c("N", "Observed", "Expected"),
  CIwidth = 0.95,
  conf.type = "log",
  caption = NULL,
  tableOnly = FALSE,
  fontsize,
  unformattedp = FALSE
)

Arguments

data

data frame containing survival data

time

string indicating survival time variable

status

string indicating event status variable

covs

character vector indicating variables to group observations by

strata

string indicating the variable to stratify observations by

includeVarNames

boolean indicating if the variable names should be included in the output table, default is FALSE

digits

the number of digits in the survival rate

showCols

character vector indicating which of the optional columns to display, defaults to c('N','Observed','Expected')

CIwidth

width of the median survival estimates, default is 95%

conf.type

type of confidence interval see survival::survfit for details. Default is 'log'.

caption

table caption

tableOnly

should a dataframe or a formatted object be returned

fontsize

PDF/HTML output only, manually set the table fontsize

unformattedp

boolean indicating if you would like the p-value to be returned unformatted (ie not rounded or prefixed with '<'). Should be used in conjunction with the digits argument.

Value

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

Examples

#' # Differences between sex
data("pembrolizumab")
rm_survdiff(data=pembrolizumab,time='os_time',status='os_status',
covs='sex',digits=1)
#> <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;"> group </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> N </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> Observed </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> Expected </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> Median (95%CI) </th>
#>   </tr>
#>  </thead>
#> <tbody>
#>   <tr>
#>    <td style="text-align:left;"> Overall </td>
#>    <td style="text-align:right;"> 94 </td>
#>    <td style="text-align:right;"> 64 </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;"> 14.0 (9.0, 20.1) </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Female </td>
#>    <td style="text-align:right;"> 58 </td>
#>    <td style="text-align:right;"> 39 </td>
#>    <td style="text-align:right;"> 41.8 </td>
#>    <td style="text-align:right;"> 14.3 (9.7, 23.8) </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Male </td>
#>    <td style="text-align:right;"> 36 </td>
#>    <td style="text-align:right;"> 25 </td>
#>    <td style="text-align:right;"> 22.2 </td>
#>    <td style="text-align:right;"> 11.2 (6.1, 25.3) </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> Log Rank Test </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;"> ChiSq = 0.5 on 1 df </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;"> p-value = 0.46 </td>
#>   </tr>
#> </tbody>
#> </table>

# Differences between sex, stratified by cohort
rm_survdiff(data=pembrolizumab,time='os_time',status='os_status',
covs='sex',strata='cohort',digits=1)
#> <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;"> group </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> N </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> Observed </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> Expected </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> Median (95%CI) </th>
#>   </tr>
#>  </thead>
#> <tbody>
#>   <tr>
#>    <td style="text-align:left;"> Overall </td>
#>    <td style="text-align:right;"> 94 </td>
#>    <td style="text-align:right;"> 64 </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;"> 14.0 (9.0, 20.1) </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Female </td>
#>    <td style="text-align:right;"> 58 </td>
#>    <td style="text-align:right;"> 39 </td>
#>    <td style="text-align:right;"> 43.0 </td>
#>    <td style="text-align:right;"> 14.3 (9.7, 23.8) </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Male </td>
#>    <td style="text-align:right;"> 36 </td>
#>    <td style="text-align:right;"> 25 </td>
#>    <td style="text-align:right;"> 21.0 </td>
#>    <td style="text-align:right;"> 11.2 (6.1, 25.3) </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> Log Rank Test </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;"> ChiSq = 1.9 on 1 df </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> stratified by cohort </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;"> p-value = 0.17 </td>
#>   </tr>
#> </tbody>
#> </table>
# Differences between sex/cohort groups
rm_survdiff(data=pembrolizumab,time='os_time',status='os_status',
covs=c('sex','cohort'),digits=1)
#> <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;"> group </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> N </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> Observed </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> Expected </th>
#>    <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> Median (95%CI) </th>
#>   </tr>
#>  </thead>
#> <tbody>
#>   <tr>
#>    <td style="text-align:left;"> Overall </td>
#>    <td style="text-align:right;"> 94 </td>
#>    <td style="text-align:right;"> 64 </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;"> 14.0 (9.0, 20.1) </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Female, A </td>
#>    <td style="text-align:right;"> 3 </td>
#>    <td style="text-align:right;"> 2 </td>
#>    <td style="text-align:right;"> 2.3 </td>
#>    <td style="text-align:right;"> 18.2 (9.5, NA) </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Female, B </td>
#>    <td style="text-align:right;"> 18 </td>
#>    <td style="text-align:right;"> 16 </td>
#>    <td style="text-align:right;"> 9.3 </td>
#>    <td style="text-align:right;"> 8.8 (4.7, 20.7) </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Female, C </td>
#>    <td style="text-align:right;"> 18 </td>
#>    <td style="text-align:right;"> 12 </td>
#>    <td style="text-align:right;"> 14.4 </td>
#>    <td style="text-align:right;"> 17.6 (8.0, NA) </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Female, D </td>
#>    <td style="text-align:right;"> 7 </td>
#>    <td style="text-align:right;"> 2 </td>
#>    <td style="text-align:right;"> 5.7 </td>
#>    <td style="text-align:right;"> NA (3.5, NA) </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Female, E </td>
#>    <td style="text-align:right;"> 12 </td>
#>    <td style="text-align:right;"> 7 </td>
#>    <td style="text-align:right;"> 10.1 </td>
#>    <td style="text-align:right;"> 20.2 (9.7, NA) </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Male, A </td>
#>    <td style="text-align:right;"> 13 </td>
#>    <td style="text-align:right;"> 10 </td>
#>    <td style="text-align:right;"> 5.9 </td>
#>    <td style="text-align:right;"> 6.5 (3.4, NA) </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Male, D </td>
#>    <td style="text-align:right;"> 5 </td>
#>    <td style="text-align:right;"> 2 </td>
#>    <td style="text-align:right;"> 4.5 </td>
#>    <td style="text-align:right;"> NA (6.4, NA) </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;padding-left: 2em;" indentlevel="1"> Male, E </td>
#>    <td style="text-align:right;"> 18 </td>
#>    <td style="text-align:right;"> 13 </td>
#>    <td style="text-align:right;"> 11.7 </td>
#>    <td style="text-align:right;"> 14.0 (5.0, NA) </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;"> Log Rank Test </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;"> ChiSq = 13.4 on 7 df </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:left;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;">  </td>
#>    <td style="text-align:right;"> p-value = 0.063 </td>
#>   </tr>
#> </tbody>
#> </table>