Counting Patients and Events in Columns
Source:R/count_patients_events_in_cols.R
      count_patients_events_in_cols.RdCounting the number of unique patients and the total number of all and specific events when a column table layout is required.
Usage
s_count_patients_and_multiple_events(
  df,
  id,
  filters_list,
  empty_stats = character(),
  labelstr = "",
  custom_label = NULL
)
summarize_patients_events_in_cols(
  lyt,
  id = "USUBJID",
  filters_list = list(),
  ...,
  .stats = c("unique", "all", names(filters_list)),
  .labels = c(unique = "Patients (All)", all = "Events (All)",
    labels_or_names(filters_list)),
  col_split = TRUE
)Arguments
- df
- ( - data.frame)
 data set containing all analysis variables.
- id
- ( - string)
 subject variable name.
- filters_list
- (named - listof- character)
 each element in this list describes one type of event describe by filters, in the same format as- s_count_patients_with_event(). If it has a label, then this will be used for the column title.
- empty_stats
- ( - character)
 optional names of the statistics that should be returned empty such that corresponding table cells will stay blank.
- labelstr
- ( - character)
 label of the level of the parent split currently being summarized (must be present as second argument in Content Row Functions). See- rtables::summarize_row_groups()for more information.
- custom_label
- ( - stringor- NULL)
 if provided and- labelstris empty then this will be used as label.
- lyt
- ( - layout)
 input layout where analyses will be added to.
- ...
- additional arguments for the lower level functions. 
- .stats
- ( - character)
 statistics to select for the table.
- .labels
- (named - character)
 labels for the statistics (without indent).
- col_split
- ( - flag)
 whether the columns should be split. Set to- FALSEwhen the required column split has been done already earlier in the layout pipe.
Value
- 
s_count_patients_and_multiple_events()returns a list with the statistics:- unique: number of unique patients in- df.
- all: number of rows in- df.
- one element with the same name as in - filters_list: number of rows in- df, i.e. events, fulfilling the filter condition.
 
- summarize_patients_events_in_cols()returns a layout object suitable for passing to further layouting functions, or to- rtables::build_table(). Adding this function to an- rtablelayout will add formatted content rows containing the statistics from- s_count_patients_and_multiple_events()to the table layout.
Functions
- s_count_patients_and_multiple_events(): Statistics function which counts numbers of patients and multiple events defined by filters. Used as analysis function- afunin- summarize_patients_events_in_cols().
- summarize_patients_events_in_cols(): Layout-creating function which can take statistics function arguments and additional format arguments. This function is a wrapper for- rtables::summarize_row_groups().
Examples
# `s_count_patients_and_multiple_events()`
df <- data.frame(
  USUBJID = rep(c("id1", "id2", "id3", "id4"), c(2, 3, 1, 1)),
  ARM = c("A", "A", "B", "B", "B", "B", "A"),
  AESER = rep("Y", 7),
  AESDTH = c("Y", "Y", "N", "Y", "Y", "N", "N"),
  AEREL = c("Y", "Y", "N", "Y", "Y", "N", "Y"),
  AEDECOD = c("A", "A", "A", "B", "B", "C", "D"),
  AEBODSYS = rep(c("SOC1", "SOC2", "SOC3"), c(3, 3, 1))
)
# Internal function - s_count_patients_and_multiple_events
if (FALSE) {
s_count_patients_and_multiple_events(
  df = df,
  id = "USUBJID",
  filters_list = list(
    serious = c(AESER = "Y"),
    fatal = c(AESDTH = "Y")
  )
)
}
# `summarize_patients_events_in_cols()`
basic_table() %>%
  summarize_patients_events_in_cols(
    filters_list = list(
      related = formatters::with_label(c(AEREL = "Y"), "Events (Related)"),
      fatal = c(AESDTH = "Y"),
      fatal_related = c(AEREL = "Y", AESDTH = "Y")
    ),
    custom_label = "%s Total number of patients and events"
  ) %>%
  build_table(df)
#>                                          Patients (All)   Events (All)   Events (Related)   fatal   fatal_related
#> —————————————————————————————————————————————————————————————————————————————————————————————————————————————————
#> %s Total number of patients and events         4               7                5             4           4