如何从R的summary对象中提取数据并生成目标格式表格
R提取summary结果并生成kable表格方案
基础方案(无需额外安装包)
summary()返回的数据框汇总结果本质是带格式的矩阵,可直接通过基础函数转换为结构化数据框:
# 1. 提取汇总结果并转置调整结构 sum_tab <- as.data.frame(unclass(summary(tab1)), check.names = FALSE) sum_tab <- as.data.frame(t(sum_tab)) # 2. 调整列顺序,增加变量名列 sum_tab$变量名 <- rownames(sum_tab) rownames(sum_tab) <- NULL sum_tab <- sum_tab[, c(ncol(sum_tab), 1:(ncol(sum_tab)-1))]
这个方案会自动适配变量类型:数值型变量输出最小值、四分位数、中位数、均值、最大值、缺失值计数;分类型变量输出各分类的频数统计。
灵活自定义方案(搭配tidyverse工具链)
如果需要统一不同类型变量的输出结构,或后续要自定义统计项,可以用批量映射的方式处理:
# 提前安装加载所需包:install.packages(c("tidyverse", "broom")) library(tidyverse) library(broom) sum_tab <- map_dfr(tab1, ~ tidy(summary(.x)), .id = "变量名")
输出的sum_tab默认包含变量名、统计项名称、统计值三列,可按需用pivot_wider()转成宽表格式。
用kable美化输出
整理好的sum_tab直接传入kable即可生成格式化表格:
# 基础打印 library(knitr) kable(sum_tab, caption = "tab1变量汇总结果") # 进阶美化(搭配kableExtra) library(kableExtra) kable(sum_tab, caption = "tab1变量汇总结果") %>% kable_styling(bootstrap_options = c("striped", "hover", "condensed"))
内容的提问来源于stack exchange,提问作者user3206440
相关产品推荐
相关产品推荐

