Home > OS >  Order regression variables in table using gtsummary
Order regression variables in table using gtsummary

Time:10-31

Is it possible to order variables in a regression table using a gtsummary function? For example, let's say I have the following model:

model <- lm(formula = mpg ~ disp   drat   hp, data = mtcars) 

I would like to create a regression table with the independent variables in the following order: drat, then hp, and then disp. The following code would accomplish that goal:

library(gtsummary)
lm(formula = mpg ~ drat   hp   disp, data = mtcars) |>
  tbl_regression()

But, rather than re-running the regression, I would like to reorder the variables contained in the model object. Is there a way to do this using a gtsummary function (or some other post-estimation function)?

CodePudding user response:

The easiest way to re-order the variables, as you mentioned, is to re-run the model with the variables in the order you like. But this can be time consuming with large models.

In each gtsummary object there is a data frame called .$table_body. Essentially, gtsummary is a fancy print of this data frame and you can re-order the rows as you need.

There is a column in the data frame called variable, and you can sort whichever variables you'd like to the top or bottom. Example below!

library(gtsummary)
#> #BlackLivesMatter
library(dplyr)

model <- lm(formula = mpg ~ disp   drat   hp, data = mtcars) 

tbl_regression(model) %>%
  # re-order the variables in the table
  modify_table_body(
    ~.x %>%
      arrange(desc(variable == "hp")) %>%
      arrange(desc(variable == "drat"))
  ) %>%
  as_kable() # convert to kable so it'll display on stackoverflow
Characteristic Beta 95% CI p-value
drat 2.7 -0.33, 5.8 0.079
hp -0.03 -0.06, 0.00 0.027
disp -0.02 -0.04, 0.00 0.050

Created on 2021-10-30 by the reprex package (v2.0.1)

  • Related