【问题标题】:Calculate percent from total observations in r gtsummary::tbl_summary?计算 r gtsummary::tbl_summary 中总观察值的百分比?
【发布时间】:2020-08-28 20:26:58
【问题描述】:

问题:在gtsummary 中,tbl_summary 函数计算总非缺失观测值的列百分比。我希望 gtsummary 计算缺失和非缺失观察总数的百分比。

来自gtsummary Table Gallery 的示例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 有没有办法做到这一点?

【问题讨论】:

    标签: r gtsummary


    【解决方案1】:

    我认为获得所需内容的最佳方法是使用 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)
    

    此解决方案对您有用吗?

    【讨论】:

    猜你喜欢
    • 2016-02-17
    • 1970-01-01
    • 2021-09-17
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多