如何指定tbl_summary中add_p()的检验方法并调整检验标签位置?
解决gtsummary中p值检验方法移至对应行的方案
要实现将每个p值对应的检验方法从页脚移至对应行,可借助gtsummary的get_test()函数提取检验方法,再通过表格修改函数将信息整合到行中,具体步骤如下:
1. 加载依赖包并生成基础表格
先创建带p值的汇总表格:
library(gtsummary) library(tidyverse) # 使用内置trial数据集生成表格 tbl <- trial %>% select(trt, age, marker, response, death) %>% tbl_summary(by = trt) %>% add_p()
2. 提取各变量的检验方法
用get_test()函数获取每个变量对应的检验类型:
# 提取所有标签行的变量名 var_names <- tbl$table_body %>% filter(row_type == "label") %>% pull(variable) # 匹配每个变量的检验方法 test_methods <- var_names %>% map_chr(~get_test(tbl, variable = .x))
3. 将检验方法整合到对应行并隐藏页脚说明
通过modify_table_body()把检验方法追加到p值单元格后,同时移除页脚的检验列表:
tbl_final <- tbl %>% modify_table_body( ~.x %>% # 合并检验方法到表格数据 left_join( tibble(variable = var_names, test_method = test_methods), by = "variable" ) %>% # 仅在标签行(p值所在行)追加检验方法 mutate( stat = ifelse(row_type == "label", paste0(stat, " (", test_method, ")"), stat) ) ) %>% # 移除页脚的检验说明 modify_footnote(all_stat_cols() ~ NA) # 输出最终表格 tbl_final
也可以用add_stat_label()实现类似效果,把检验方法作为p值的行标签:
tbl %>% add_stat_label( location = "row", # 为不同类型变量设置带检验方法的标签 label = list( all_continuous() ~ paste0("p值 (", test_methods[match(variable, var_names)], ")"), all_categorical() ~ paste0("p值 (", test_methods[match(variable, var_names)], ")") ) ) %>% modify_footnote(all_stat_cols() ~ NA)
以上两种方式都能让每个p值直接关联对应的检验方法,替代页脚的统一列表展示。
内容的提问来源于stack exchange,提问作者jvt
相关产品推荐
相关产品推荐

