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

如何禁用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 16:57:19