如何为列联表同时添加行百分比与列百分比?
同时添加行百分比与列百分比到列联表的解决方案
要在列联表的每个单元格同时显示原始计数、列百分比和行百分比,可以通过分别计算两种百分比后合并的方式实现,具体代码如下:
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
相关产品推荐
相关产品推荐

