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

如何按指定列(如均值)排序modelsummary包的datasummary输出?

解决modelsummary的datasummary按统计量排序问题

你之前的方法无效是因为coef_rename和coef_map是针对回归模型系数的重命名工具,不适用描述性统计表格的变量排序。datasummary的公式左侧变量顺序是固定的,必须先确定排序后的变量列表,再动态传入公式或直接构造统计量数据框输出。

方法一:动态生成排序后的公式

先计算变量的均值并排序,再把排序后的变量名转换成datasummary可识别的公式:

library(modelsummary)
library(dplyr)

# 1. 计算目标变量的均值,按均值降序提取变量名
sorted_vars <- mtcars %>%
  select(hp, mpg) %>%  # 指定要分析的变量
  summarise(across(everything(), mean)) %>%
  pivot_longer(everything(), names_to = "var", values_to = "mean") %>%
  arrange(desc(mean)) %>%
  pull(var)

# 2. 动态生成datasummary公式
formula <- as.formula(paste(paste(sorted_vars, collapse = "+"), "~ mean + sd"))

# 3. 生成排序后的统计表格
datasummary(formula, data = mtcars)

方法二:先构造统计量数据框再输出

如果需要更灵活的格式控制,可以先手动计算统计量并排序,再用datasummary_df输出:

# 1. 计算统计量并整理成排序后的数据框
summary_df <- mtcars %>%
  select(hp, mpg) %>%
  summarise(across(everything(), list(均值 = mean, 标准差 = sd))) %>%
  pivot_longer(everything(), 
               names_to = c("变量", "统计量"), 
               names_sep = "_") %>%
  pivot_wider(names_from = "统计量", values_from = "value") %>%
  arrange(desc(均值))

# 2. 输出格式化表格
datasummary_df(summary_df, 
               fmt = "%.2f",  # 设置数值保留两位小数
               col.names = c("变量", "均值", "标准差"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 03:15:09