如何在expss中为多变量表格仅添加一次总计统计量
问题描述
使用expss包创建行展示多变量、显示列百分比的表格,要求仅在表格底部添加一次总计统计量(未加权N、加权N),但当前代码会为每个变量分别生成重复的总计。
原问题代码
mtcars |> expss::tab_cols(list(am, expss::total())) |> expss::tab_cells(cyl, gear) |> expss::tab_stat_cpct(total_row_position = "none") |> expss::tab_stat_cases(total_statistic = c("u_cases", "w_cases"), total_label = c("N (unweighted)", "N (weighted)")) |> expss::tab_pivot()
原代码输出(存在重复总计)
| | | 0 | 1 | #Total | | ---- | --------------- | ---- | ---- | ------ | | cyl | 4 | 15.8 | 61.5 | 34.4 | | | 6 | 21.1 | 23.1 | 21.9 | | | 8 | 63.2 | 15.4 | 43.8 | | gear | 3 | 78.9 | | 46.9 | | | 4 | 21.1 | 61.5 | 37.5 | | | 5 | | 38.5 | 15.6 | | cyl | 4 | 3.0 | 8.0 | 11.0 | | | 6 | 4.0 | 3.0 | 7.0 | | | 8 | 12.0 | 2.0 | 14.0 | | | #N (unweighted) | 19.0 | 13.0 | 32.0 | | | #N (weighted) | 19.0 | 13.0 | 32.0 | | gear | 3 | 15.0 | | 15.0 | | | 4 | 4.0 | 8.0 | 12.0 | | | 5 | | 5.0 | 5.0 | | | #N (unweighted) | 19.0 | 13.0 | 32.0 | | | #N (weighted) | 19.0 | 13.0 | 32.0 |
解决方案
原代码中tab_stat_cases会为tab_cells内的每个变量(cyl、gear)分别生成统计,导致重复总计。将其替换为tab_total_stat即可在表格底部添加一次全局总计统计,修改后的代码如下:
mtcars |> expss::tab_cols(list(am, expss::total())) |> expss::tab_cells(cyl, gear) |> expss::tab_stat_cpct(total_row_position = "none") |> expss::tab_total_stat(total_statistic = c("u_cases", "w_cases"), total_label = c("N (unweighted)", "N (weighted)")) |> expss::tab_pivot()
期望输出(仅一次总计)
| | | 0 | 1 | #Total | | ---- | --------------- | ---- | ---- | ------ | | cyl | 4 | 15.8 | 61.5 | 34.4 | | | 6 | 21.1 | 23.1 | 21.9 | | | 8 | 63.2 | 15.4 | 43.8 | | gear | 3 | 78.9 | | 46.9 | | | 4 | 21.1 | 61.5 | 37.5 | | | 5 | | 38.5 | 15.6 | | | #N (unweighted) | 19.0 | 13.0 | 32.0 | | | #N (weighted) | 19.0 | 13.0 | 32.0 |
内容的提问来源于stack exchange,提问作者deschen
相关产品推荐
相关产品推荐

