Add combination levels to split
Arguments
- combosdf
(
data.frame
ortbl_df
)
a data frame with columnsvalname
,label
,levelcombo
, andexargs
.levelcombo
andexargs
should be list columns. Passing theselect_all_levels
object as a value incomblevels
column 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
(
character
orNULL
)
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