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

在R中如何为crosstab交叉表添加行/列百分比(类似Excel数据透视表)

代码修改方案

你需要把百分比计算逻辑放在数值格式化之前执行,避免数值转字符后无法计算比例,完整可运行代码如下:

library(dplyr)
library(janitor)

alldata2019_v2 %>% 
  tabyl(agerange, gender) %>% 
  adorn_totals(c("row", "col")) %>% 
  # 计算所需百分比列
  mutate(
    Female_pct = Female / Total,
    Male_pct = Male / Total,
    Age_pct = Total / last(Total)
  ) %>% 
  # 统一格式化输出
  mutate(
    # 计数列添加千分位分隔符
    across(c(Female, Male, Total), ~ format(.x, big.mark = ",")),
    # 百分比列格式化为整数带%后缀
    across(ends_with("_pct"), ~ scales::percent(.x, accuracy = 1))
  )

可选调整项

  • 若不想额外加载scales包做百分比格式化,可将百分比格式化部分替换为手动实现:
    across(ends_with("_pct"), ~ paste0(round(.x * 100), "%"))
    
  • 若不需要总计行显示百分比,可在最后添加如下代码清空总计行的百分比值:
    mutate(across(ends_with("_pct"), ~ ifelse(agerange == "总计", "", .x)))
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:18:03