如何禁用tbl_summary中分数的自动格式化功能?
解决gtsummary表格分组标签被自动格式化为分数的问题
这个问题源于gtsummary依赖的gt包默认会自动识别并格式化类似分数的文本(比如5/6会被转成½样式),而分母大于12的分数(如13/17)不会触发该自动格式化逻辑。以下是几种可行的解决方法:
方法1:全局禁用gt的自动分数格式化
在代码开头设置gt全局选项,彻底关闭自动分数转换功能:
library(tidyverse) library(gtsummary) # 禁用gt自动格式化分数 gt::gt_options(auto_format_fractions = FALSE) tibble(x= LETTERS[sample(1:5,24,replace=TRUE)], y = rep(c("TEST1", "TEST 5/6"), 12)) |> tbl_summary(by=y)
方法2:单独修改表格的分组标签
如果不想全局修改,可在生成表格后手动指定分组的显示文本:
library(tidyverse) library(gtsummary) tibble(x= LETTERS[sample(1:5,24,replace=TRUE)], y = rep(c("TEST1", "TEST 5/6"), 12)) |> tbl_summary(by=y) |> modify_header(all_stat_cols() ~ paste0("**", y, "**"))
也可以精准修改单个分组:
tibble(x= LETTERS[sample(1:5,24,replace=TRUE)], y = rep(c("TEST1", "TEST 5/6"), 12)) |> tbl_summary(by=y) |> modify_table_styling( columns = stat_2, header = ~ "**TEST 5/6**" )
方法3:数据阶段处理分组变量
给易被识别为分数的文本添加零宽空格,避免gt触发自动格式化:
library(tidyverse) library(gtsummary) tibble(x= LETTERS[sample(1:5,24,replace=TRUE)], y = rep(c("TEST1", "TEST 5\u200B/6"), 12)) |> # \u200B为零宽空格 tbl_summary(by=y)
内容的提问来源于stack exchange,提问作者bdeonovic
相关产品推荐
相关产品推荐

