【问题标题】:tbl_merge: sort variables alphabetically in merged tbl_regression models {gtsummary}tbl_merge:在合并的 tbl_regression 模型中按字母顺序对变量进行排序 {gtsummary}
【发布时间】:2022-01-21 08:03:00
【问题描述】:

考虑下面的例子:

library(tidyverse)
library(gtsummary)

    t1 <- trial %>%
      na.exclude() %>%
      lm(marker ~ age + ttdeath, .) %>%
      tbl_regression()
    t2 <- trial %>%
      na.exclude() %>%
      lm(marker ~ age + response + death, .) %>%
      tbl_regression()
    t3 <- trial %>%
      na.exclude() %>%
      lm(marker ~ age + stage + death, .) %>%
      tbl_regression()
    t4 <- trial %>%
      na.exclude() %>%
      lm(marker ~ stage + grade + death, .) %>%
      tbl_regression()
    
    tbl_merge(list(t1, t2, t3 ,t4))

在特征选项卡中,变量仅在特定模型中按字母顺序排列。 例如,如果只看表 1 就可以了,那就是 A-M-T。

但是,当同时查看多个表格时,顺序不是按字母顺序排列的。 有没有办法在所有表格中按字母顺序对变量进行排序?

例如年龄、年级、死亡月数/审查员、患者死亡...

我假设这样做的方法是通过gtsummary::modify_table_body 进入dplyr::arrange, 但我不知道该怎么做。

任何帮助将不胜感激。提前致谢。

编辑:实际上,无论如何手动修改变量的顺序也会有所帮助,如果太难,请忽略它。

Edit2:我忘了提到还有一目了然的统计数据,比如add_glance_table(adj.r.squared) %&gt;% modify_table_body(~.x %&gt;% arrange(row_type == "glance_statistic"))(在这个例子中没有),所以我想变量的排序有可能与一目了然统计的顺序混淆以及。请原谅我把这个弄复杂了,但它会非常有帮助。

【问题讨论】:

    标签: r gtsummary


    【解决方案1】:

    @Daniel D. Sjoberg 的解决方案显然是最好的。 但这里有一个我认为更灵活的替代策略。

    Daniel D. Sjoberg 使用 tbl_stack() Supress table header in tbl_regression of gt_summary 提供了提示

    这是它的工作原理:

    1. 首先像你一样使用tbl_merge
    2. 然后在表格的每个变量行中使用tbl_split。您将获得一份清单。
    3. 为列表元素指定名称
    4. 然后按照您希望的顺序使用tbl_stack
    library(tidyverse)
    library(gtsummary)
    
    x <- tbl_merge(list(t1, t2, t3 ,t4))
    
    y <- x %>% 
      tbl_split(variables = c(age, ttdeath, response, death, stage, grade)) 
    
    age <- y[[1]]
    ttdeath <- y[[2]]
    response <- y[[3]]
    death <- y[[4]]
    stage <- y[[5]]
    grade <- y[[6]]
    
    tbl_stack(list(age, grade, ttdeath, death, response, stage))
    

    【讨论】:

    • 我找到了一种可能更好的方法(与 Daniel 一起),它来自 [link]stackoverflow.com/questions/46129322/…。您可以modify_table_body( ~.x %&gt;% dplyr::arrange( match(var_label, c("variable_name_1", "variable_name_2", [...])) )手动自定义修改您的可变订单!
    • 这是我的第一个解决方案。但问题是您无法从 tibble 或数据框中获取 gt_summary 表。
    【解决方案2】:

    modify_table_body() 是正确的选择。您首先要安排将一览表放在底部的顺序,然后按"var_label" 安排以将变量按字母顺序排列。 "var_label".$table_body 中的一列。下面的例子!

    library(gtsummary)
    packageVersion("gtsummary")
    #> [1] '1.5.0'
    
    t1 <- trial %>%
      lm(marker ~ age + ttdeath, .) %>%
      tbl_regression() %>%
      add_glance_table(adj.r.squared)
    t2 <- trial %>%
      lm(marker ~ age + response + death, .) %>%
      tbl_regression() %>%
      add_glance_table(adj.r.squared)
    t3 <- trial %>%
      lm(marker ~ age + stage + death, .) %>%
      tbl_regression() %>%
      add_glance_table(adj.r.squared)
    t4 <- trial %>%
      lm(marker ~ stage + grade + death, .) %>%
      tbl_regression() %>%
      add_glance_table(adj.r.squared)
    
    tbl <- 
      tbl_merge(list(t1, t2, t3 ,t4)) %>%
      modify_table_body(
        ~.x %>% 
          dplyr::arrange(
            row_type == "glance_statistic", # sort glance table to bottom
            var_label                       # sort by the variable label (a hidden column) 
          )
      )
    

    reprex package (v2.0.1) 于 2021 年 12 月 19 日创建

    【讨论】:

      猜你喜欢
      • 2011-03-30
      • 2019-04-21
      • 2011-08-29
      • 2010-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-22
      • 1970-01-01
      相关资源
      最近更新 更多