如何在gtsummary中为表格同一行添加多个独立脚注
问题:在gtsummary分层汇总表中添加多个独立脚注
原始分层汇总表代码
以下代码用于生成按年份分层的汇总表:
library(tidyverse) library(gtsummary) set.seed(50) dat <- data.frame(exposed = sample(c("Unexposed","Exposed"), 100, TRUE), year = rep(c(1985,1986), each = 50), Age = rnorm(100, 85, 1), Transit = sample(c("Bus", "Train", "Walk", "Car"), 100, TRUE)) dat %>% tbl_strata(strata = year, ~ .x %>% tbl_summary( by = exposed, include = c(Age, Transit), statistic = list(Age ~ "{mean} ± {sd}"), digits = Age ~ 1, label = Age ~ "Age, mean ± SD" )) %>% modify_header(all_stat_cols() ~ "**{level}**") %>% modify_footnote(update = everything() ~ NA)
遇到的问题
多次调用modify_table_styling添加脚注时,先前的脚注会被覆盖,最终仅保留最后一次添加的内容。例如以下代码执行后,Transit行仅显示"Footnote 3":
dat %>% tbl_strata(strata = year, ~ .x %>% tbl_summary( by = exposed, include = c(Age, Transit), statistic = list(Age ~ "{mean} ± {sd}"), digits = Age ~ 1, label = Age ~ "Age, mean ± SD" )) %>% modify_header(all_stat_cols() ~ "**{level}**") %>% modify_table_styling(columns = label, rows = variable == "Age", footnote = "Footnote 1") %>% modify_table_styling(columns = label, rows = label == "Transit", footnote = "Footnote 2") %>% modify_table_styling(columns = label, rows = label == "Transit", footnote = "Footnote 3") %>% modify_footnote(update = everything() ~ NA)
解决方案
通过设置modify_table_styling的append = TRUE参数,实现脚注追加而非覆盖。修改后的代码如下:
dat %>% tbl_strata(strata = year, ~ .x %>% tbl_summary( by = exposed, include = c(Age, Transit), statistic = list(Age ~ "{mean} ± {sd}"), digits = Age ~ 1, label = Age ~ "Age, mean ± SD" )) %>% modify_header(all_stat_cols() ~ "**{level}**") %>% # 给Age行添加脚注 modify_table_styling(columns = label, rows = variable == "Age", footnote = "Footnote 1") %>% # 给Transit行追加第一个脚注 modify_table_styling(columns = label, rows = label == "Transit", footnote = "Footnote 2", append = TRUE) %>% # 给Transit行追加第二个脚注 modify_table_styling(columns = label, rows = label == "Transit", footnote = "Footnote 3", append = TRUE) %>% modify_footnote(update = everything() ~ NA)
原理说明
modify_table_styling默认append = FALSE,每次调用会替换目标行/列的已有样式(包括脚注);设置append = TRUE后,新的脚注会被添加到已有脚注的末尾,不会覆盖原有内容。
内容的提问来源于stack exchange,提问作者epifan
相关产品推荐
相关产品推荐

