按组拆分摘要 table 时如何标记列并保留组大小?
How to label columns and retain group sizes when splitting summary table by group?
创建摘要 table 时,按组拆分,每个组的大小会自动显示在各自列的顶部。所以列标题看起来像这样: 1、N = 100 | 2、N = 120。代码如下:
library(dplyr)
library(gtsummary)
data %>%
select(group, age, sex) %>%
tbl_summary(by = group)
但是,我想将我的组命名为比“1”和“2”更有意义的名称。例如,如果我的数据包含游泳的孩子 class,我想用游泳的名字 class 来命名这些组:鸭子和乌龟。所以我做了这样的事情:
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")
这有效!但是,每个组的大小从各自列的顶部消失。我的 work-around 是手动添加每个组的大小,作为名称的一部分。我必须给自己留个小纸条,在添加之前检查每个组的 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")
这可行,但它 error-prone 因为它需要我仔细检查数字然后手动添加它们。
如何在按组拆分摘要 table 时标记代表每个组的列,并保留显示组大小的数字?
有两种方法可以完成此操作。
首先是在将数据框传递给 tbl_summary()
之前更改数据框中的级别。然后默认列 header 将默认具有您的自定义 headers 和正确的 Ns。
第二个是利用 modify_header()
中可用的动态统计数据。当你有一个tbl_summary(by=)
object被一个变量拆分时,你可以访问{n}
、{N}
、{p}
,它们可以放在列header。查看帮助文件以获取详细信息: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 年 1 月 18 日创建
创建摘要 table 时,按组拆分,每个组的大小会自动显示在各自列的顶部。所以列标题看起来像这样: 1、N = 100 | 2、N = 120。代码如下:
library(dplyr)
library(gtsummary)
data %>%
select(group, age, sex) %>%
tbl_summary(by = group)
但是,我想将我的组命名为比“1”和“2”更有意义的名称。例如,如果我的数据包含游泳的孩子 class,我想用游泳的名字 class 来命名这些组:鸭子和乌龟。所以我做了这样的事情:
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")
这有效!但是,每个组的大小从各自列的顶部消失。我的 work-around 是手动添加每个组的大小,作为名称的一部分。我必须给自己留个小纸条,在添加之前检查每个组的 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")
这可行,但它 error-prone 因为它需要我仔细检查数字然后手动添加它们。
如何在按组拆分摘要 table 时标记代表每个组的列,并保留显示组大小的数字?
有两种方法可以完成此操作。
首先是在将数据框传递给 tbl_summary()
之前更改数据框中的级别。然后默认列 header 将默认具有您的自定义 headers 和正确的 Ns。
第二个是利用 modify_header()
中可用的动态统计数据。当你有一个tbl_summary(by=)
object被一个变量拆分时,你可以访问{n}
、{N}
、{p}
,它们可以放在列header。查看帮助文件以获取详细信息: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 年 1 月 18 日创建