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

如何为列联表同时添加行百分比与列百分比?

同时添加行百分比与列百分比到列联表的解决方案

要在列联表的每个单元格同时显示原始计数、列百分比和行百分比,可以通过分别计算两种百分比后合并的方式实现,具体代码如下:

library(tidyverse)
library(janitor)

# 生成带总计的基础计数表
base_tab <- mtcars %>% 
  tabyl(gear, cyl) %>% 
  adorn_totals("row", name = "Column Total") %>% 
  adorn_totals("col")

# 计算并格式化列百分比
col_pct_tab <- base_tab %>% 
  adorn_percentages("col") %>% 
  adorn_pct_formatting(digits = 1)

# 计算并格式化行百分比
row_pct_tab <- base_tab %>% 
  adorn_percentages("row") %>% 
  adorn_pct_formatting(digits = 1)

# 合并计数、列百分比和行百分比到单元格
final_tab <- base_tab %>% 
  mutate(
    across(-gear, ~paste0(., " (", col_pct_tab[[cur_column()]], " | ", row_pct_tab[[cur_column()]], ")"))
  )

print(final_tab)

输出结果示例

gear                 4                  6                   8               Total
            3   1 (9.1% | 6.7%)   2 (28.6% | 13.3%)  12 (85.7% | 80.0%)  15 (46.9% | 100.0%)
            4   8 (72.7% | 66.7%)   4 (57.1% | 33.3%)    0 (0.0% | 0.0%)  12 (37.5% | 100.0%)
            5   2 (18.2% | 40.0%)   1 (14.3% | 20.0%)    2 (14.3% | 40.0%)   5 (15.6% | 100.0%)
 Column Total 11 (100.0% | 34.4%)  7 (100.0% | 21.9%)  14 (100.0% | 43.8%) 32 (100.0% | 100.0%)

若需舍弃原始计数

只需修改合并单元格的代码部分,去掉计数即可:

final_tab_no_n <- base_tab %>% 
  mutate(
    across(-gear, ~paste0(col_pct_tab[[cur_column()]], " | ", row_pct_tab[[cur_column()]]))
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 17:27:31