如何修改tbl_hierarchical()生成ECG表中各项的自定义分母?
自定义tbl_hierarchical表格特定分组的分母值
问题背景
使用tbl_hierarchical()生成ECG分析表格时,需要针对特定分组的不同层级设置自定义分母:
- 分组"A: Drug X"下,
BASECAT1为"Normal/missing"的分母设为103 - 分组"A: Drug X"下,
BASECAT1为"Abnormal"的分母设为31
解决方案
tbl_hierarchical的全局denominator参数无法实现这种精细化的分母自定义,需要通过自定义统计函数来指定特定场景的分母值。以下是修改后的完整代码:
adsl <- random.cdisc.data::cadsl adeg <- random.cdisc.data::cadeg adeg_f <- adeg %>% filter(PARAMCD %in% c("ECGINTP") & ABLFL != "Y") %>% filter(ONTRTFL == "Y") %>% dplyr::select(USUBJID, PARAMCD, PARAM, BASEC, AVALC, ABLFL, ASEQ, ARM)|> dplyr::mutate( AVALCAT1 = factor( case_when( AVALC == "NORMAL" ~ "Normal", AVALC == "ABNORMAL" ~ "Abnormal" ), levels = c("Normal", "Abnormal") ), AVALCAT1N = case_when( AVALC == "NORMAL" ~ 1, AVALC == "ABNORMAL" ~ 2 ) ) |> dplyr::group_by(USUBJID) |> dplyr::slice(which.max(AVALCAT1N)) |> dplyr::ungroup() |> dplyr::mutate( BASECAT1 = factor( case_when( BASEC == "NORMAL" | BASEC == "" ~ "Normal/missing", BASEC == "ABNORMAL" ~ "Abnormal" ), levels = c("Normal/missing", "Abnormal") ) ) # 定义自定义统计函数,替换特定场景的分母 custom_stat <- function(x, .N, .by, .var, .level) { # 获取当前分组和层级信息 current_arm <- .by$ARM current_base_level <- .level$BASECAT1 # 设置自定义分母规则 custom_N <- case_when( current_arm == "A: Drug X" & current_base_level == "Normal/missing" ~ 103, current_arm == "A: Drug X" & current_base_level == "Abnormal" ~ 31, # 其他情况使用默认分母 TRUE ~ .N ) n <- sum(!is.na(x)) p <- round(n / custom_N * 100, 1) glue::glue("{n}/{custom_N} ({p}%)") } tbl <- tbl_hierarchical( data = adeg_f, by = ARM, id = USUBJID, variables = c(BASECAT1 , AVALCAT1), include = everything(), denominator = adeg_f, label = list( BASECAT1 = "Baseline", AVALCAT1 = "Post baseline ECG n/N1 (%)" ), # 使用自定义统计函数 statistic = list(everything() ~ custom_stat) ) tbl
代码说明
自定义统计函数
custom_stat:- 通过
.by参数获取当前分组(ARM),.level参数获取当前BASECAT1的层级 - 使用
case_when设置自定义分母规则,仅对"A: Drug X"组的指定层级替换分母,其他场景保留原分母 - 手动计算n(有效例数)、p(百分比),并按格式返回字符串
- 通过
表格生成部分:
- 将
statistic参数替换为自定义函数custom_stat,替代原有的字符串格式模板 - 其余参数保持原有设置,确保表格结构和层级逻辑不变
- 将
内容的提问来源于stack exchange,提问作者Zoe Cai
相关产品推荐
相关产品推荐

