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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 14:15:33