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

如何在tbl_summary行百分比模式下仅显示特定列的百分比?

问题描述

我已在tbl_summary()中设置按行计算百分比(percent = "row"),现需实现仅为特定列(变量)显示百分比的效果,请问应如何修改代码?当前使用的代码如下:

Table1234 %>%
    select(everything(), -c(screening_id, m07_mainsourceincome_c, m01_2_ageyears_q, r_sample)) %>%
    tbl_summary(by = "test_result", 
                percent = "row",
                digits = NULL,
                label = list(age_group_10yrs ~ "Age Groups", 
                             m01_1_sex_d ~ "Sex",
                             m05_qualificationmg_c ~ "Education", 
                             m06_indivemployment_c ~ "Profession",
                             m06_indivemployment_currently_employed ~ "Employment Status")) %>%
    modify_column_hide(., columns = stat_1) %>%
  bold_labels() %>%
    add_p() %>%
   add_overall()
解决方案

要实现仅特定变量显示行百分比的效果,你可以用tbl_summary()的statistic参数,给目标变量单独定义带行百分比的统计格式,其他变量设置成只显示频数或者你需要的其他统计量。

修改后的代码示例

假设你想让Sex和Education这两个变量显示行百分比,剩下的变量只显示频数,修改后的代码如下:

Table1234 %>%
    select(everything(), -c(screening_id, m07_mainsourceincome_c, m01_2_ageyears_q, r_sample)) %>%
    tbl_summary(by = "test_result", 
                percent = "row",  # 保留行百分比的计算逻辑
                digits = NULL,
                label = list(age_group_10yrs ~ "Age Groups", 
                             m01_1_sex_d ~ "Sex",
                             m05_qualificationmg_c ~ "Education", 
                             m06_indivemployment_c ~ "Profession",
                             m06_indivemployment_currently_employed ~ "Employment Status"),
                # 指定统计格式:默认分类变量只显示频数,目标变量加行百分比
                statistic = list(
                  all_categorical() ~ "{n}",
                  m01_1_sex_d ~ "{n} ({p_row}%)",
                  m05_qualificationmg_c ~ "{n} ({p_row}%)"
                )) %>%
    modify_column_hide(columns = stat_1) %>%
    bold_labels() %>%
    add_p() %>%
    add_overall()

注意事项

  • {p_row}%会沿用你设置的percent = "row"规则计算行百分比,不用额外调整计算逻辑。
  • 如果是数值型变量,你可以用all_continuous()来统一设置显示格式,再针对特定变量单独覆盖。
  • 要是你说的“特定列”是指分组后的某一列(比如test_result的某个水平列),可以用modify_table_body()筛选目标列后修改统计格式,但这种场景比较少见,一般上面的变量级控制更贴合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 16:31:18