计算 r gtsummary::tbl_summary 中总观测值的百分比?
Calculate percent from total observations in r gtsummary::tbl_summary?
问题:在 gtsummary
中,tbl_summary
函数计算非缺失观测值总数的列百分比。我想 gtsummary
计算缺失和非缺失观测值总数的百分比。
示例来自 gtsummary
Table 图库 http://www.danieldsjoberg.com/gtsummary/articles/gallery.html
trial[c("trt", "age", "grade")] %>%
tbl_summary(
by = trt,
missing = "no",
statistic = all_continuous() ~ "{median} ({p25}, {p75}) [N = {N_nonmiss}]"
) %>%
modify_header(stat_by = md("**{level}**<br>N = {n} ({style_percent(p)}%)")) %>%
add_n() %>%
bold_labels() %>%
modify_spanning_header(starts_with("stat_") ~ "**Chemotherapy Treatment**")
等级没有缺失观察值,因此药物 A 组中 35 名患有 1 级疾病的人为 35/98 (36%)。
现在,将 3 级重新编码为缺失:
trial$grade[trial$grade %in% "III"] <- NA
trial$grade <- droplevels(trial$grade)
重新运行 tbl_summary
:
trial[c("trt", "age", "grade")] %>%
tbl_summary(
by = trt,
missing = "no",
statistic = all_continuous() ~ "{median} ({p25}, {p75}) [N = {N_nonmiss}]"
) %>%
modify_header(stat_by = md("**{level}**<br>N = {n} ({style_percent(p)}%)")) %>%
add_n() %>%
bold_labels() %>%
modify_spanning_header(starts_with("stat_") ~ "**Chemotherapy Treatment**")
1 级现在表示为 67 个 (52%) 非缺失 obs 中的 n = 35。在药物 A 组中。我仍然希望将百分比表示为 98 人中的 36%。在 gtsummary
中有没有办法做到这一点?
我认为获得所需内容的最佳方法是使用 forcats::fct_explicit_na()
函数使缺失值显式为 NA。当NA值是一个因素的水平时,它会被包含在百分比计算的分母中。
library(gtsummary)
library(tidyverse)
trial %>%
select(response, trt) %>%
# make missing value explicit for categorical variables, using fct_explicit_na
mutate(response = factor(response) %>% fct_explicit_na()) %>%
# summarize data
tbl_summary(by = trt)
这个解决方案对你有用吗?
问题:在 gtsummary
中,tbl_summary
函数计算非缺失观测值总数的列百分比。我想 gtsummary
计算缺失和非缺失观测值总数的百分比。
示例来自 gtsummary
Table 图库 http://www.danieldsjoberg.com/gtsummary/articles/gallery.html
trial[c("trt", "age", "grade")] %>%
tbl_summary(
by = trt,
missing = "no",
statistic = all_continuous() ~ "{median} ({p25}, {p75}) [N = {N_nonmiss}]"
) %>%
modify_header(stat_by = md("**{level}**<br>N = {n} ({style_percent(p)}%)")) %>%
add_n() %>%
bold_labels() %>%
modify_spanning_header(starts_with("stat_") ~ "**Chemotherapy Treatment**")
等级没有缺失观察值,因此药物 A 组中 35 名患有 1 级疾病的人为 35/98 (36%)。
现在,将 3 级重新编码为缺失:
trial$grade[trial$grade %in% "III"] <- NA
trial$grade <- droplevels(trial$grade)
重新运行 tbl_summary
:
trial[c("trt", "age", "grade")] %>%
tbl_summary(
by = trt,
missing = "no",
statistic = all_continuous() ~ "{median} ({p25}, {p75}) [N = {N_nonmiss}]"
) %>%
modify_header(stat_by = md("**{level}**<br>N = {n} ({style_percent(p)}%)")) %>%
add_n() %>%
bold_labels() %>%
modify_spanning_header(starts_with("stat_") ~ "**Chemotherapy Treatment**")
1 级现在表示为 67 个 (52%) 非缺失 obs 中的 n = 35。在药物 A 组中。我仍然希望将百分比表示为 98 人中的 36%。在 gtsummary
中有没有办法做到这一点?
我认为获得所需内容的最佳方法是使用 forcats::fct_explicit_na()
函数使缺失值显式为 NA。当NA值是一个因素的水平时,它会被包含在百分比计算的分母中。
library(gtsummary)
library(tidyverse)
trial %>%
select(response, trt) %>%
# make missing value explicit for categorical variables, using fct_explicit_na
mutate(response = factor(response) %>% fct_explicit_na()) %>%
# summarize data
tbl_summary(by = trt)
这个解决方案对你有用吗?