【问题标题】:Is there a way to relevel a variable in gtsummary after generating the beautiful table?生成漂亮的表格后,有没有办法重新调整 gtsummary 中的变量?
【发布时间】:2023-04-01 10:54:01
【问题描述】:

我正在尝试在创建表后重新调整 gtsummary 对象中特定变量的级别。默认情况下,引用的级别位于顶部(如预期的那样),但有时您需要特定的顺序。对于这张桌子,我希望将年龄猫“61-83”推下。我用 modify_table 试过了,但我得到了 relevel(agecat, ref = "0-20") 中的错误:找不到对象 'agecat'

library(gtsummary)
library(dplyr)

data(trial)

trial <- trial %>%
  mutate(agecat = case_when(between(age, 0, 20) ~ "0-20",
                            between(age, 21, 40) ~ "21-40",
                            between(age, 41, 60) ~ "41-60",
                            between(age, 61, 83) ~ "61-83"),
         agecat = as.factor(agecat),
         agecat = relevel(agecat, ref = "61-83"))

glm(response ~ trt + grade + agecat,
    data = trial, family = binomial) %>%
  tbl_regression(exponentiate = TRUE)

【问题讨论】:

    标签: r gtsummary


    【解决方案1】:

    有两种方法可以解决这个问题:

    1. gtsummary 表的打印本质上是一个带有格式选项的数据框,以使其美观。您可以使用 modify_table_body()arrange() 函数对基础数据框进行排序。
    library(gtsummary)
    library(tidyverse)
    packageVersion("gtsummary")
    
    
    trial2 <-
      trial %>%
      mutate(
        agecat = case_when(
          between(age, 0, 20) ~ "0-20",
          between(age, 21, 40) ~ "21-40",
          between(age, 41, 60) ~ "41-60",
          between(age, 61, 83) ~ "61-83"
        ) %>%
          factor(),
      )
    
    glm(response ~ trt + grade + agecat,
        data = trial2 %>% mutate(agecat = relevel(agecat, ref = "61-83")), 
        family = binomial) %>%
      tbl_regression(exponentiate = TRUE) %>%
      modify_table_body(
        ~ .x %>%
          arrange(variable, desc(row_type == "label"), label == "61-83")
      )
    
    1. 第二种方法是使用contrasts() 指定应该引用哪个组。 tbl_regression() 保留顺序。
    contrasts(trial2$agecat) <-
      contr.treatment(levels(trial2$agecat),
                      base = which(levels(trial2$agecat) == "61-83")
      )
    
    glm(response ~ trt + grade + agecat,
        data = trial2, 
        family = binomial) %>%
      tbl_regression(exponentiate = TRUE)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多