Skip to contents

A function to create the appropriate statistics needed for exposure table

Usage

s_summarize_ex_j(
  df,
  .var,
  .df_row,
  .spl_context,
  comp_btw_group = TRUE,
  ref_path = NULL,
  ancova = FALSE,
  interaction_y,
  interaction_item,
  conf_level,
  daysconv,
  variables
)

a_summarize_ex_j(
  df,
  .var,
  .df_row,
  .spl_context,
  comp_btw_group = TRUE,
  ref_path = NULL,
  ancova = FALSE,
  interaction_y = FALSE,
  interaction_item = NULL,
  conf_level = 0.95,
  variables,
  .stats = c("mean_sd", "median", "range", "quantiles", "total_subject_years"),
  .formats = c(diff_mean_est_ci = jjcsformat_xx("xx.xx (xx.xx, xx.xx)")),
  .labels = c(quantiles = "Interquartile range"),
  .indent_mods = NULL,
  na_str = rep("NA", 3),
  daysconv = 1
)

Arguments

df

(data.frame)
data set containing all analysis variables.

.var

(string)
single variable name that is passed by rtables when requested by a statistics function.

.df_row

(data.frame)
data frame across all of the columns for the given row split.

.spl_context

(data.frame)
gives information about ancestor split states that is passed by rtables.

comp_btw_group

(logical)
If TRUE,
When ancova = FALSE, the estimate of between group difference (on CHG) will be based upon two-sample t-test.

When ancova = TRUE, the same ancova model will be used for the estimate of between group difference (on CHG).

ref_path

(character)
global reference group specification, see get_ref_info().

ancova

(logical)
If FALSE, only descriptive methods will be used.
If TRUE Ancova methods will be used for each of the columns : AVAL, CHG, DIFF.

interaction_y

(character)
Will be passed onto the tern function s_ancova, when ancova = TRUE.

interaction_item

(character)
Will be passed onto the tern function s_ancova, when ancova = TRUE.

conf_level

(proportion)
Confidence level of the interval

daysconv

conversion required to get the values into days (i.e 1 if original PARAMCD unit is days, 30.4375 if original PARAMCD unit is in months)

variables

(named list of strings)
list of additional analysis variables, with expected elements:

  • arm (string)
    group variable, for which the covariate adjusted means of multiple groups will be summarized. Specifically, the first level of arm variable is taken as the reference group.

  • covariates (character)
    a vector that can contain single variable names (such as 'X1'), and/or interaction terms indicated by 'X1 * X2'.

.stats

(character)
statistics to select for the table.

.formats

(named character or list)
formats for the statistics. See Details in analyze_vars for more information on the 'auto' setting.

.labels

(named character)
labels for the statistics (without indent).

.indent_mods

(named integer)
indent modifiers for the labels. Defaults to 0, which corresponds to the unmodified default behavior. Can be negative.

na_str

(string)
string used to replace all NA or empty values in the output.

Value

Details

Creates statistics needed for standard exposure table This includes differences and 95% CI and total treatment years. This is designed to be used as an analysis (afun in analyze) function.

Creates statistics needed for table. This includes differences and 95% CI and total treatment years. This is designed to be used as an analysis (afun in analyze) function.

Functions

  • s_summarize_ex_j(): Statistics function needed for the exposure tables

  • a_summarize_ex_j(): Formatted analysis function which is used as afun.

Examples

library(dplyr)

ADEX <- data.frame(
  USUBJID = c(
    "XXXXX01", "XXXXX02", "XXXXX03", "XXXXX04", "XXXXX05",
    "XXXXX06", "XXXXX07", "XXXXX08", "XXXXX09", "XXXXX10"
  ),
  TRT01A = c(
    "ARMA", "ARMA", "ARMA", "ARMA", "ARMA",
    "Placebo", "Placebo", "Placebo", "ARMA", "ARMA"
  ),
  AVAL = c(56, 78, 67, 87, 88, 93, 39, 87, 65, 55)
)

ADEX <- ADEX |>
  mutate(TRT01A = as.factor(TRT01A))

ADEX$colspan_trt <- factor(ifelse(ADEX$TRT01A == "Placebo", " ", "Active Study Agent"),
  levels = c("Active Study Agent", " ")
)

ADEX$diff_header <- "Difference in Means (95% CI)"
ADEX$diff_label <- paste(ADEX$TRT01A, paste("vs", "Placebo"))

colspan_trt_map <- create_colspan_map(ADEX,
  non_active_grp = "Placebo",
  non_active_grp_span_lbl = " ",
  active_grp_span_lbl = "Active Study Agent",
  colspan_var = "colspan_trt",
  trt_var = "TRT01A"
)
ref_path <- c("colspan_trt", "", "TRT01A", "Placebo")

lyt <- basic_table() |>
  split_cols_by(
    "colspan_trt",
    split_fun = trim_levels_to_map(map = colspan_trt_map)
  ) |>
  split_cols_by("TRT01A") |>
  split_cols_by("diff_header", nested = FALSE) |>
  split_cols_by(
    "TRT01A",
    split_fun = remove_split_levels("Placebo"),
    labels_var = "diff_label"
  ) |>
  analyze("AVAL",
    afun = a_summarize_ex_j, var_labels = "Duration of treatment (Days)",
    show_labels = "visible",
    indent_mod = 0L,
    extra_args = list(
      daysconv = 1,
      ref_path = ref_path,
      variables = list(arm = "TRT01A", covariates = NULL),
      ancova = TRUE,
      comp_btw_group = TRUE
    )
  )

result <- build_table(lyt, ADEX)

result
#>                                     Active Study Agent                    Difference in Means (95% CI)
#>                                            ARMA             Placebo             ARMA vs Placebo       
#> ——————————————————————————————————————————————————————————————————————————————————————————————————————
#> Duration of treatment (Days)                                                                          
#>   Mean (SD)                           70.86 (13.704)     73.00 (29.597)      -2.14 (-32.33, 28.04)    
#>   Median                                  67.00              87.00                                    
#>   Min, max                             55.00, 88.00       39.00, 93.00                                
#>   Interquartile range                  56.00, 87.00       39.00, 93.00                                
#>   Total treatment (subject years)      496.0 (1.4)        219.0 (0.6)