Add combination levels to split
Arguments
- combosdf
(
data.frameortbl_df)
a data frame with columnsvalname,label,levelcombo, andexargs.levelcomboandexargsshould be list columns. Passing theselect_all_levelsobject as a value incomblevelscolumn indicates that an overall/all-observations level should be created.- trim
(
flag)
whether splits corresponding with 0 observations should be kept when tabulating.- first
(
flag)
whether the created split level should be placed first in the levels (TRUE) or last (FALSE, the default).- keep_levels
(
characterorNULL)
if non-NULL, the levels to retain across both combination and individual levels.
Note
Analysis or summary functions for which the order matters should never be used within the tabulation framework.
Examples
library(tibble)
combodf <- tribble(
~valname, ~label, ~levelcombo, ~exargs,
"A_B", "Arms A+B", c("A: Drug X", "B: Placebo"), list(),
"A_C", "Arms A+C", c("A: Drug X", "C: Combination"), list()
)
lyt <- basic_table(show_colcounts = TRUE) %>%
split_cols_by("ARM", split_fun = add_combo_levels(combodf)) %>%
analyze("AGE")
tbl <- build_table(lyt, DM)
tbl
#> A: Drug X B: Placebo C: Combination Arms A+B Arms A+C
#> (N=121) (N=106) (N=129) (N=227) (N=250)
#> ————————————————————————————————————————————————————————————————————
#> Mean 34.91 33.02 34.57 34.03 34.73
lyt1 <- basic_table(show_colcounts = TRUE) %>%
split_cols_by("ARM",
split_fun = add_combo_levels(combodf,
keep_levels = c(
"A_B",
"A_C"
)
)
) %>%
analyze("AGE")
tbl1 <- build_table(lyt1, DM)
tbl1
#> Arms A+B Arms A+C
#> (N=227) (N=250)
#> ——————————————————————————
#> Mean 34.03 34.73
smallerDM <- droplevels(subset(DM, SEX %in% c("M", "F") &
grepl("^(A|B)", ARM)))
lyt2 <- basic_table(show_colcounts = TRUE) %>%
split_cols_by("ARM", split_fun = add_combo_levels(combodf[1, ])) %>%
split_cols_by("SEX",
split_fun = add_overall_level("SEX_ALL", "All Genders")
) %>%
analyze("AGE")
lyt3 <- basic_table(show_colcounts = TRUE) %>%
split_cols_by("ARM", split_fun = add_combo_levels(combodf)) %>%
split_rows_by("SEX",
split_fun = add_overall_level("SEX_ALL", "All Genders")
) %>%
summarize_row_groups() %>%
analyze("AGE")
tbl3 <- build_table(lyt3, smallerDM)
tbl3
#> A: Drug X B: Placebo Arms A+B Arms A+C
#> (N=121) (N=106) (N=227) (N=121)
#> ———————————————————————————————————————————————————————————————————————
#> All Genders 121 (100.0%) 106 (100.0%) 227 (100.0%) 121 (100.0%)
#> Mean 34.91 33.02 34.03 34.91
#> F 70 (57.9%) 56 (52.8%) 126 (55.5%) 70 (57.9%)
#> Mean 33.71 33.84 33.77 33.71
#> M 51 (42.1%) 50 (47.2%) 101 (44.5%) 51 (42.1%)
#> Mean 36.55 32.10 34.35 36.55
