1

当我做一个 tbl_stack 时,我想在标题的 tbl_stack 中显示组合表的总数 N。目前,结果似乎显示堆栈中第一个表的 N。

  trial %>%
  select(age, grade, response, trt) %>%
  filter(grade == "I") %>%
  tbl_summary(
    by = trt,
    label = list(age ~ "Patient Age"),
    statistic = list(all_continuous() ~ "{mean} ({sd})"),
    digits = list(age ~ c(0, 1))
  )
tbl_summary_ex2a <-
  trial %>%
  select(age, grade, response, trt) %>%
  filter(grade %in% c("II", "III", "IV")) %>%
  tbl_summary(
    by = trt,
    label = list(age ~ "Patient Age"),
    statistic = list(all_continuous() ~ "{mean} ({sd})"),
    digits = list(age ~ c(0, 1))
  )

tbl_stack(tbls=list(tbl_summary_ex2, tbl_summary_ex2a))

在此处输入图像描述 感谢您的任何提示,杰夫

4

1 回答 1

0

是的,正如文档tbl_stack()所示,标题保留在堆栈中的第一个 gtsummary 中。但是,您可以使用该modify_header()功能更改标题。此外,这些 gtsummary 表有一个内部对象 ,.$df_by它保存每个表中的 N。您可以使用这些内部数据框对表中的 N 求和。下面的示例以编程方式执行此操作,但如果更容易,您可以简单地对 Ns 进行硬编码。

library(gtsummary)
library(tidyverse)

tbl_summary_ex2 <-
  trial %>%
  select(age, grade, response, trt) %>%
  filter(grade == "I") %>%
  tbl_summary(
    by = trt,
    label = list(age ~ "Patient Age"),
    statistic = list(all_continuous() ~ "{mean} ({sd})"),
    digits = list(age ~ c(0, 1)),
    include = -grade
  )
tbl_summary_ex2a <-
  trial %>%
  select(age, grade, response, trt) %>%
  filter(grade %in% c("II", "III", "IV")) %>%
  tbl_summary(
    by = trt,
    label = list(age ~ "Patient Age"),
    statistic = list(all_continuous() ~ "{mean} ({sd})"),
    digits = list(age ~ c(0, 1)),
    include = -grade
  )

# calculate the sum total Ns from both tables
list_N <- 
  tbl_summary_ex2$df_by %>%
  bind_rows(tbl_summary_ex2a$df_by) %>%
  select(by_col, by, n) %>%
  group_by(by_col, by) %>%
  summarise(n = sum(n)) %>%
  mutate(
    header_update = 
      str_glue("{by_col} ~ '**{by}**, N = {n}'") %>%
      as.formula() %>%
      list()
  ) %>%
  pull(header_update)
list_N

tbl_stack(
  tbls=list(tbl_summary_ex2, tbl_summary_ex2a),
  group_header = c("Grade I", "Grade > I")
) %>%
  modify_header(list_N)

在此处输入图像描述

于 2020-10-26T15:21:47.950 回答