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

R语言如何将data.frame的summary结果转换为data.frame格式

问题:将data.frame的summary结果转换为指定格式的data.frame

请问在R中如何将对data.frame执行summary得到的结果本身转换为data.frame格式?需要在RMarkdown中将该结果传给knitr::kable输出,因此要求输出格式为data.frame。

示例数据

d <- data.frame(a=c(1,2,3), b=c(4,5,6))
ds <- summary(d)
class(ds)
# 返回 "table"

预期输出的data.frame以Min.、1st Qu.、Median等统计项为行名,以原data.frame的列名a、b为列名,单元格存储对应的统计数值。


解决方案

方法1:基础R实现(无需安装第三方包)

直接对summary返回的table对象做格式清洗后重构:

# 转换逻辑
ds_df <- as.data.frame(
  matrix(
    # 提取每个单元格的数值
    as.numeric(sub(".*:", "", ds)), 
    nrow = nrow(ds),
    # 设定行名(统计指标)和列名(原数据框列名)
    dimnames = list(trimws(sub(":.*", "", ds[,1])), colnames(ds))
  )
)

生成的ds_df可直接传入knitr::kable()使用,完全符合预期格式要求。

方法2:tidyverse风格实现(适配tidy分析流程)

直接通过统计汇总生成目标格式,无需处理summary的返回结果,逻辑更清晰:

library(dplyr)

ds_df <- d %>% 
  # 对所有列计算summary包含的6项统计值
  summarise(across(everything(), 
                   list(
                     Min. = min,
                     `1st Qu.` = ~quantile(., 0.25),
                     Median = median,
                     Mean = mean,
                     `3rd Qu.` = ~quantile(., 0.75),
                     Max. = max
                   ))) %>% 
  t() %>% 
  as.data.frame() %>% 
  setNames(colnames(d))

# 将统计指标设为行名
rownames(ds_df) <- unique(sub(".*_", "", rownames(ds_df)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 14:15:03