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

gtsummary表格所有数值小数点替换为逗号失败求助

解决tbl_summary转gt后全表格小数点替换为逗号的问题

问题核心在于:tbl_summary生成的描述统计量列是字符型字符串,而非数值型,gt的fmt_number只对数值列生效,这就是你之前操作只有p值(数值型)能改,其他统计量没变化的原因。

直接给两种可行方案:

方案1:在tbl_summary阶段就设置格式(推荐)

不用等转成gt再改,直接在生成汇总表时统一指定小数分隔符,代码示例:

library(gtsummary)
library(gt)

# 替换成你的数据集和分组变量
your_data %>%
  tbl_summary(by = group_var) %>%
  # 给所有统计量列设置格式:逗号做小数分隔符,点做千分位,保留2位小数
  modify_fmt_fun(
    all_stat_cols(),
    ~ style_number(., decimal.mark = ",", big.mark = ".", digits = 2)
  ) %>%
  # 单独给p值列设置格式:保留3位小数,用逗号做分隔符
  modify_fmt_fun(
    all_p_cols(),
    ~ style_number(., decimal.mark = ",", big.mark = ".", digits = 3)
  ) %>%
  # 处理缺失值行的数值格式
  modify_fmt_fun(
    rows = contains("Missing Values"),
    ~ style_number(., decimal.mark = ",", big.mark = ".")
  ) %>%
  as_gt()

这个方法一步到位,所有数值(包括统计量、缺失值计数/百分比、p值)都会自动用逗号做小数分隔符。

方案2:转成gt后处理(适合已生成tbl_summary表格的情况)

如果已经有现成的tbl_summary对象,需要先把字符型的统计量列转成数值再格式化,需处理带范围的统计量(比如"12.3 (4.5-6.7)"),示例代码:

# 假设你已经有了tbl_summary对象tbl
gt_tbl <- tbl %>% as_gt()

gt_tbl %>%
  text_transform(
    locations = cells_body(columns = starts_with("stat_")),
    fn = function(x) {
      # 处理单个数值的情况
      if (grepl("^\\d+\\.\\d+$", x)) {
        style_number(as.numeric(x), decimal.mark = ",", big.mark = ".", digits = 2)
      }
      # 处理范围类统计量(均值±标准差、中位数四分位距等)
      else if (grepl("\\d+\\.\\d+.*\\d+\\.\\d+", x)) {
        nums <- as.numeric(stringr::str_extract_all(x, "\\d+\\.\\d+")[[1]])
        formatted_nums <- style_number(nums, decimal.mark = ",", big.mark = ".", digits = 2)
        stringr::str_replace_all(x, "\\d+\\.\\d+", formatted_nums)
      }
      # 整数等其他情况直接保留
      else x
    }
  ) %>%
  # 格式化p值
  fmt_number(
    columns = matches("p.value|p_val"), 
    decimals = 3,
    dec_mark = ",",
    sep_mark = "."
  ) %>%
  # 格式化缺失值行
  fmt(
    columns = everything(),
    rows = contains("Missing Values"),
    fns = function(x) style_number(as.numeric(x), decimal.mark = ",", big.mark = ".")
  )

这个方法需要处理不同格式的字符串,相对繁琐,优先推荐方案1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 18:07:26