You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整modelsummary输出的多fixest模型列行布局?

解决modelsummary多模型术语同行对齐(空缺填充NA)问题

针对你遇到的不同模型术语集合/顺序不一致,输出时无法同行对齐、空缺需填NA的问题,可以通过先提取模型结果再统一整理宽格式的方式解决,具体步骤如下:

1. 提取所有模型的结果数据

先把每个模型的拟合结果(均值、统计量等)提取出来,统一标记模型ID:

library(tidyverse)
library(fixest)
library(modelsummary)

# 拟合原模型
fit <- mtcars %>% feols(c(mpg, hp) ~ 1)
fit_1 <- mtcars %>% feols(c(mpg, hp, wt) ~ 1)
fit_2 <- mtcars %>% feols(c(mpg, hp, gear, wt) ~ 1)

# 提取所有模型的tidy结果,添加模型标识
tidy_results <- list(Model1 = fit, Model2 = fit_1, Model3 = fit_2) %>%
  map_dfr(tidy, .id = "model") %>%
  select(model, term, estimate) # 仅保留模型、术语、均值,如需标准误可加std.error

2. 统一术语全集并整理宽格式

获取所有模型的术语集合,转成宽格式后自动填充NA,同时按统一顺序排列术语:

# 获取所有唯一术语,按字母顺序排序(可自定义排序规则)
all_terms <- tidy_results %>% pull(term) %>% unique() %>% sort()

# 转换为宽格式,每个模型对应一列,空缺填充NA
aligned_table <- tidy_results %>%
  pivot_wider(
    names_from = model,
    values_from = estimate,
    id_cols = term,
    values_fill = NA
  ) %>%
  arrange(factor(term, levels = all_terms)) # 按统一术语顺序排列

3. 用modelsummary输出格式化表格

最后把整理好的宽格式数据传入modelsummary,输出flextable格式:

modelsummary(aligned_table, output = "flextable")

扩展:保留统计量的情况

如果需要同时展示均值和标准误,可调整提取和整理逻辑:

# 提取包含标准误的结果
tidy_results_stats <- list(Model1 = fit, Model2 = fit_1, Model3 = fit_2) %>%
  map_dfr(tidy, .id = "model") %>%
  select(model, term, estimate, std.error)

# 整理为统计量嵌套的宽格式
aligned_table_stats <- tidy_results_stats %>%
  pivot_longer(cols = c(estimate, std.error), names_to = "statistic") %>%
  pivot_wider(
    names_from = c(model, statistic),
    values_from = value,
    id_cols = term,
    values_fill = NA
  ) %>%
  arrange(factor(term, levels = all_terms))

# 输出表格
modelsummary(aligned_table_stats, output = "flextable")

这种方法不受原模型术语顺序影响,能确保所有术语同行对齐,缺失的模型结果自动填充NA,完美匹配你的需求。

内容的提问来源于stack exchange,提问作者astrae_research

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 08:55:17