gt_summary中add_difference后仅留差值列并添加非参数检验P值的方法
解决方法
核心思路是先保留add_difference生成的所有列,添加非参数检验的P值列后,再隐藏不需要的旧列,避免直接隐藏列后调用add_p引发的冲突。以下是具体实现代码:
library(gt) library(gtSummary) # 使用内置trial数据集演示 result_tbl <- trial %>% # 选择分组变量和分析变量 select(trt, age, marker, response) %>% # 生成基础分组统计表格 tbl_summary(by = trt, missing = "no") %>% # 生成差值列(同时会生成默认的p.value和ci列,后续隐藏) add_difference() %>% # 添加非参数检验的P值:连续变量用Wilcoxon检验,分类变量按需指定 add_p( test = list( all_continuous() ~ "wilcox.test", # 连续变量非参数检验 all_categorical() ~ "chisq.test" # 分类变量可按需调整检验方法 ), pvalue_fun = ~style_pvalue(.x, digits = 3), # P值格式化 column_name = "p_nonparametric" # 给新P值列命名,避免与旧列重名 ) %>% # 隐藏add_difference生成的默认p.value和ci列 modify_column_hide(c(p.value, ci)) %>% # 调整列顺序,让差值列和非参数P值列相邻 modify_column_order(c(label, stat_1, stat_2, difference, p_nonparametric)) # 输出表格 result_tbl
关键说明
- 不要先调用
modify_column_hide:直接隐藏列后调用add_p会因表格对象内部的列冲突报错,需先保留所有列完成新P值的添加。 - 精准指定检验方法:通过
add_p的test参数,用all_continuous()选择器批量给连续变量指定非参数检验(如Wilcoxon秩和检验),分类变量可根据需求调整检验方法。 - 重命名新P值列:避免与
add_difference生成的默认p.value列重名,确保表格结构清晰。
内容的提问来源于stack exchange,提问作者Rana
相关产品推荐
相关产品推荐

