You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何指定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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 11:16:12