如何在 gtsummary 层级表中仅显示事件数而不显示百分比?
数据小陈
结论
可以在 tbl_ard_hierarchical() 的 statistic 格式中判断当前行是否包含 p。如果包含,就显示事件数和百分比;如果没有,则只显示事件数。这样,ard_event_count 使用 statistic = everything() ~ c("n", "N") 后,默认格式就不会因引用缺失的 p 而报错。
ard_event_count <- adae %>%
mutate(event_flag = "Total Events") %>%
ard_tabulate(
data = .,
variables = event_flag,
by = "TRT01P",
denominator = adsl,
statistic = everything() ~ c("n", "N")
) %>%
filter(variable_level == "Total Events")
创建层级表时,可以传入条件格式:
tbl <- tbl_ard_hierarchical(
ard,
variables = c(event_flag, AESOC, AEBODSYS, AESEV),
by = "TRT01P",
statistic = ~ '{ifelse(
exists("p"),
sprintf("%s (%s %%)", n, p),
n
)}'
) %>%
modify_header(
label = "",
all_stat_cols() ~ "**{level}** \n**N = {n}**"
) %>%
modify_footnote(everything() ~ NA)
原因
表格默认的统计格式会读取 p。将 ard_event_count 改为只生成 n 和 N 后,这部分 ARD 中不再包含 p,因此格式化表达式会报错。条件表达式会在 p 存在时显示 n (p%),否则只显示 n。在 sprintf() 的格式字符串中,%% 表示输出字面百分号。
列标题中的 N = {n} 用于显示组总人数;统计单元格是否显示百分比由另一项设置控制。tbl_ard_hierarchical() 的 statistic 参数决定统计单元格的呈现方式,可用字段应与传入的 ARD 中实际包含的统计量相匹配。更多用法见 gtsummary 层级表文档 和 对应问题的示例解答。
备注:内容仅供参考。
