rm_survdiff.RdThis 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
)data frame containing survival data
string indicating survival time variable
string indicating event status variable
character vector indicating variables to group observations by
string indicating the variable to stratify observations by
boolean indicating if the variable names should be included in the output table, default is FALSE
the number of digits in the survival rate
character vector indicating which of the optional columns to display, defaults to c('N','Observed','Expected')
width of the median survival estimates, default is 95%
type of confidence interval see
survival::survfit for details. Default is 'log'.
table caption
should a dataframe or a formatted object be returned
PDF/HTML output only, manually set the table fontsize
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.
A character vector of the survival table source code, unless tableOnly=TRUE in which case a data frame is returned
#' # 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>