Add Combination Levels to split
Arguments
- combosdf
data.frame/tbl_df. Columnsvalname,label,levelcombo,exargs. Of whichlevelcomboandexargsare list columns. Passing theselect_all_levelsobject as a value in thecomblevelscolumn indicates that an overall/all-observations level should be created.- trim
logical(1). Should splits corresponding with 0 observations be kept when tabulating.
- first
logical(1). Should the created split level be placed first in the levels (
TRUE) or last (FALSE, the default).- keep_levels
character or NULL. 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
