我有一个因变量,有四个结果。我已经使用mlogit包进行了多项逻辑回归。
当我尝试使用gtsummary包呈现结果时,我的多项逻辑回归结果堆叠在一起(请参阅下面的代码和表)。
有没有办法让结果并排排成一行,只使用一组级别标签,而不是像下表那样堆叠在一起?
# load packages
library(gtsummary)
library(nnet)
# dummy data
crime <-data.frame(city = sample(c("SF", "AR", "NYC","MN"),13000,replace = TRUE),
year = sample(as.factor(c(1990, 2000, 1999, 1989)),13000,replace = TRUE)
)
# multinom model tabulated with gtsummary
multinom(city ~ year, data = crime) %>%
tbl_regression(exponentiate = T)

发布于 2020-10-22 00:57:53
默认情况下,多项式模型将以长格式打印。
我已经编写了一个小函数来将结果转换为wide,并将其保存为GitHub Gist。https://gist.github.com/ddsjoberg/a55afa74ac58e1f895862fcabab62406
set.seed(20210511)
library(gtsummary)
library(magrittr)
multinom_pivot_wider <- function(x) {
# check inputs match expectatations
if (!inherits(x, "tbl_regression") || !inherits(x$model_obj, "multinom")) {
stop("`x=` must be class 'tbl_regression' summary of a `nnet::multinom()` model.")
}
# create tibble of results
df <- tibble::tibble(outcome_level = unique(x$table_body$groupname_col))
df$tbl <-
purrr::map(
df$outcome_level,
function(lvl) {
gtsummary::modify_table_body(
x,
~dplyr::filter(.x, .data$groupname_col %in% lvl) %>%
dplyr::ungroup() %>%
dplyr::select(-.data$groupname_col)
)
}
)
tbl_merge(df$tbl, tab_spanner = paste0("**", df$outcome_level, "**"))
}
# dummy data
crime <-
data.frame(
city = sample(c("SF", "AR", "NYC", "MN"), 13000, replace = TRUE),
year = sample(as.factor(c(1990, 2000, 1999, 1989)), 13000, replace = TRUE)
)
# multinom model tabulated with gtsummary
tbl <-
nnet::multinom(city ~ year, data = crime) %>%
tbl_regression(exponentiate = TRUE) %>%
multinom_pivot_wider()

https://stackoverflow.com/questions/64463878
复制相似问题