Add Combination Levels to split
Arguments
- combosdf
data.frame
/tbl_df
. Columnsvalname
,label
,levelcombo
,exargs
. Of whichlevelcombo
andexargs
are list columns. Passing theselect_all_levels
object as a value in thecomblevels
column 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