2

创建按组拆分的汇总表时,每个组的大小会自动显示在各自列的顶部。所以列标题看起来像这样: 特征 | 1,N = 100 | 2、N = 120。代码如下:

library(dplyr)
library(gtsummary)

data %>% 
  select(group, age, sex) %>%
  tbl_summary(by = group)

但是,我想将我的组命名为比“1”和“2”更有意义的名称。例如,如果我的数据包含游泳班的孩子,我想用游泳班的名称来命名这些组:鸭子和海龟。所以我做这样的事情:

library(dplyr)
library(gtsummary)

data %>% 
  select(group, age, sex) %>%
  tbl_summary(by = group) %>%
   modify_header(
    update = list(
      stat_1 ~ "**Ducks**",
      stat_2 ~ "**Turtles**")) 
  modify_spanning_header(
    update = starts_with("stat_") ~ "Swim Class Name") 

这行得通!但是,每个组的大小从各自列的顶部消失。我的解决方法是手动添加每个组的大小,作为名称的一部分。在添加之前,我必须给自己留一个小便条,以检查每个组的 N。像这样:

library(dplyr)
library(gtsummary)

data %>% 
  select(group, age, sex) %>%
  tbl_summary(by = group) %>%
   modify_header(
    update = list(
      stat_1 ~ "**Ducks**, N = 100",
      stat_2 ~ "**Turtles**, N = 120")) %>% # to check the N for each group, remove this to see default appearance which shows the N
  modify_spanning_header(
    update = starts_with("stat_") ~ "Swim Class Name") 

这可行,但容易出错,因为它需要我仔细检查数字然后手动添加它们。

如何标记代表每个组的列,并在按组拆分汇总表时保留显示组大小的数字?

4

1 回答 1

1

有两种方法可以完成这项工作。

第一个是在将数据框传递给tbl_summary(). 然后默认列标题将默认具有正确 Ns 的自定义标题。

第二个是利用内部可用的动态统计信息modify_header()。当您有一个tbl_summary(by=)由变量分割的对象时,您可以访问{n}{N}{p},并且它们可以放在列标题中。查看帮助文件以了解详细信息:http : //www.danieldsjoberg.com/gtsummary/reference/modify.html(请注意,您需要 gtsummary v1.3.6 才能使此代码正常工作。)

两种方法都导致相同的表。

library(gtsummary)
packageVersion("gtsummary")
#> [1] '1.3.6'

# Method 1: Change the underlying data before passing df to `tbl_summary()`
tbl1 <-
  trial %>%
  select(trt, age) %>%
  mutate(trt = factor(trt, labels = c("Duck", "Turtle"))) %>%
  tbl_summary(by = trt, missing = "no")

# Method 2: Use the dynamic stats available in `modify_header()`
tbl2 <-
  trial %>%
  select(trt, age) %>%
  tbl_summary(by = trt, missing = "no") %>%
  modify_header(list(
    stat_1 ~ "**Duck**, N = {n}",
    stat_2 ~ "**Turtle**, N = {n}"
  ))

reprex 包(v0.3.0)于 2021-01-18 创建

在此处输入图像描述

于 2021-01-18T14:34:53.977 回答