求助:gtsummary数据汇总的子集筛选、数值替换等问题解决
针对gtsummary数据汇总需求的解决方法
1. 正确筛选housing分组,移除100k以上的行
直接在原始数据层面先过滤,再传入gtsummary,避免表格生成后残留空行/0值:
# 假设数据集名为df filtered_df <- df %>% filter(housing %in% c("12k-25k", "25k-100k")) # 基于过滤后的数据生成汇总表 tbl <- filtered_df %>% tbl_summary(...)
如果已经生成汇总表,也可以直接修改表格主体移除目标行:
tbl <- tbl %>% modify_table_body( filter(!housing %in% "100k以上") # 替换为你实际的100k以上分组名称 )
2. 精准替换0为'-'、小于10的数值为'<10'
不要用字符串替换函数(如gsub),直接针对数值做逻辑判断,用modify_fmt_fun自定义格式化规则:
# 定义格式化函数 custom_fmt <- function(x) { case_when( x == 0 ~ "-", x < 10 ~ "<10", TRUE ~ as.character(x) ) } # 将函数应用到汇总表的统计列(可指定特定列,或所有统计列) tbl <- tbl %>% modify_fmt_fun( all_stat_cols() ~ custom_fmt )
3. 移除自动生成的百分比
在tbl_summary初始化时直接关闭百分比显示:
tbl <- filtered_df %>% tbl_summary( # 对所有分类变量关闭百分比 percent = "none", # 或针对特定变量自定义统计量,仅保留计数 statistic = list(all_categorical() ~ "{n}") )
如果已生成表格,也可通过修改样式移除百分比列:
tbl <- tbl %>% modify_table_styling( columns = all_stat_cols() %>% contains("percent"), hide = TRUE )
内容的提问来源于stack exchange,提问作者Kyle
相关产品推荐
相关产品推荐

