如何在R中生成带有行百分比的嵌套汇总表格?
解决方案
要生成带有行百分比的嵌套表格,这里提供两种实用方法:
方法一:使用janitor包(推荐,简洁高效)
janitor包专门用于生成美观的统计表格,能快速实现计数+行百分比的需求:
# 安装依赖包(首次使用时运行) install.packages(c("janitor", "dplyr")) # 加载包 library(janitor) library(dplyr) # 生成目标嵌套表格 mtcars %>% tabyl(gear, vs, am) %>% # 行:gear,列:vs与am的交叉嵌套 adorn_percentages("row") %>% # 计算行内百分比(同一gear分组下) adorn_pct_formatting(digits = 1) %>% # 格式化百分比,保留1位小数 adorn_ns(position = "front") %>% # 将计数放在百分比前,格式为「计数 (百分比%)」 adorn_title("combined") # 合并列标题为嵌套格式
输出的表格会以gear为行,vs和am的交叉组合为列,每个单元格同时显示子组计数和该行内的占比。
方法二:Base R原生实现(无需额外安装包)
如果不想安装第三方包,可以通过原生函数手动计算并合并计数与百分比:
# 生成原始计数的嵌套表格 count_tab <- ftable(mtcars$gear, mtcars$vs, mtcars$am, exclude = NULL) # 计算行百分比(按gear分组,保留1位小数) row_percent <- round(prop.table(count_tab, margin = 1) * 100, 1) # 合并计数与百分比,格式为「计数 (百分比%)」 result_tab <- matrix( paste(count_tab, " (", row_percent, "%)", sep = ""), nrow = nrow(count_tab), dimnames = dimnames(count_tab) ) # 转换为ftable格式输出 ftable(result_tab)
这段代码先通过ftable获取原始计数,再用prop.table按行计算百分比,最后将两者拼接成字符串并转换为嵌套表格格式。
内容的提问来源于stack exchange,提问作者Ahir Bhairav Orai
相关产品推荐
相关产品推荐

