Skip to contents

Derives the count_denom_fraction statistic (i.e., 'xx /xx (xx.x percent)' ) Summarizes the number of unique subjects with a response = 'Y' for a given variable (e.g. TRTEMFL) within each category of another variable (e.g., SEX). Note that the denominator is derived using input df, in order to have these aligned with alt_source_df, it is expected that df includes all subjects.

Usage

response_by_var(
  df,
  labelstr = NULL,
  .var,
  .N_col,
  resp_var = NULL,
  id = "USUBJID",
  .format = jjcsformat_count_denom_fraction,
  ...
)

Arguments

df

Name of dataframe being analyzed.

labelstr

Custom label for the variable being analyzed.

.var

Name of the variable being analyzed. Records with non-missing values will be counted in the denominator.

.N_col

numeric(1). The total for the current column.

resp_var

Name of variable, for which, records with a value of 'Y' will be counted in the numerator.

id

Name of column in df which will have patient identifiers

.format

Format for the count/denominator/fraction output.

...

Additional arguments passed to the function.

Value

a `RowsVerticalSection` for use by the internal tabulation machinery of `rtables`

Details

This is an analysis function for use within `analyze`. Arguments `df`, `.var` will be populated automatically by rtables during the tabulation process.

Examples


library(dplyr)

ADAE <- data.frame(
  USUBJID = c(
    'XXXXX01', 'XXXXX02', 'XXXXX03', 'XXXXX04', 'XXXXX05',
    'XXXXX06', 'XXXXX07', 'XXXXX08', 'XXXXX09', 'XXXXX10'
  ),
  SEX_DECODE = c(
    'Female', 'Female', 'Male', 'Female', 'Male',
    'Female', 'Male', 'Female', 'Male', 'Female'
  ),
  TRT01A = c(
    'ARMA', 'ARMB', 'ARMA', 'ARMB', 'ARMB',
    'Placebo', 'Placebo', 'Placebo', 'ARMA', 'ARMB'
  ),
  TRTEMFL = c('Y', 'Y', 'N', 'Y', 'Y', 'Y', 'Y', 'N', 'Y', 'Y')
)

ADAE <- ADAE |>
  mutate(
    TRT01A = as.factor(TRT01A),
    SEX_DECODE = as.factor(SEX_DECODE)
  )

lyt <- basic_table() |>
  split_cols_by('TRT01A') |>
  analyze(
    vars = 'SEX_DECODE',
    var_labels = 'Sex, n/Ns (%)',
    show_labels = 'visible',
    afun = response_by_var,
    extra_args = list(resp_var = 'TRTEMFL'),
    nested = FALSE
  )

result <- build_table(lyt, ADAE)

result
#>                     ARMA           ARMB         Placebo   
#> ——————————————————————————————————————————————————————————
#> Sex, n/Ns (%)                                             
#>   Female        1/1 (100.0%)   3/3 (100.0%)   1/2 (50.0%) 
#>   Male          1/2 (50.0%)    1/1 (100.0%)   1/1 (100.0%)