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

如何使用flextable在列中按行添加百分比(同列含计数与占比)

在flextable中同一列同时显示计数与百分比

要实现分组统计行显示「计数 (百分比%)」的格式,比如setosa对应列显示为“45 (31%)”,可以按以下步骤操作:

  1. 先完成分组统计并添加总计行,提取总计值用于计算百分比
  2. 将计数与百分比合并为格式化字符串
  3. 用flextable渲染最终表格

完整代码示例:

library(dplyr)
library(datasets)
library(janitor)
library(flextable)
data(iris)

# 1. 分组统计+添加总计行
df <- iris %>%
  group_by(Species) %>%
  summarize("Big Sepals" = sum(Sepal.Length > 4.5)) %>%
  adorn_totals("row")

# 2. 计算百分比并合并列内容
total_val <- df$`Big Sepals`[df$Species == "Total"]
df <- df %>%
  mutate(
    `Big Sepals` = if_else(
      Species != "Total",
      sprintf("%d (%.0f%%)", `Big Sepals`, (`Big Sepals`/total_val)*100),
      as.character(`Big Sepals`) # 总计行保留原数值
    )
  )

# 3. 生成flextable表格
flextable(df)

关键说明

  • 用adorn_totals生成总计行后,提取总计值total_val作为百分比计算的分母
  • 通过sprintf格式化字符串,实现「计数 (百分比%)」的显示效果,%.0f%%表示百分比保留0位小数
  • 用if_else区分分组行和总计行,确保总计行只显示总计数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 13:18:00