【问题标题】:How to label columns and retain group sizes when splitting summary table by group?按组拆分汇总表时如何标记列并保留组大小?
【发布时间】:2021-01-18 06:19:30
【问题描述】:

创建按组拆分的汇总表时,每个组的大小会自动显示在各自列的顶部。所以列标题看起来像这样:特征 | 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") 

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

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

【问题讨论】:

    标签: gtsummary


    【解决方案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 package (v0.3.0) 于 2021-01-18 创建

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-01
      • 2016-11-15
      • 1970-01-01
      • 1970-01-01
      • 2017-12-24
      • 1970-01-01
      • 2020-11-30
      相关资源
      最近更新 更多