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

如何在tbl_summary()中同时配置两种digits参数规则?

解决tbl_summary()同时设置分类变量小数位与去除大数字分隔符的问题

直接上可行的代码方案:

library(gtsummary)
library(tibble)

# 构造示例数据
df <- tibble(
  a = sample(c('red', 'blue', 'pink'), size = 10000, replace = T),
  b = sample(c('car', 'bike', 'boat'), size = 10000, replace = T)
)

# 同时实现两个需求的tbl_summary调用
df %>%
  tbl_summary(
    digits = list(
      # 给所有分类变量设置:频数0位小数,百分比1位小数
      all_categorical() ~ c(0, 1),
      # 给所有数值去掉大数字分隔符(比如把3,000变成3000)
      ~label_style_number(big.mark = "")
    )
  )

为什么之前的方法会出问题?

  • 重复传digits参数:R函数不允许同一个参数被多次赋值,自然会抛出「formal argument "digits" matches multiple specified arguments」错误。
  • 合并规则时出错:如果之前合并的方式不对(比如把两个规则写在同一个公式里),会导致优先级冲突,全局规则覆盖了分类变量的小数位设置,才会出现所有值小数位变0的情况。

方案原理

gtsummary的digits参数支持传入一个规则列表,列表内的规则会按顺序生效:

  1. 先应用all_categorical() ~ c(0,1),专门给分类变量的频数、百分比指定小数位;
  2. 再应用全局规则~label_style_number(big.mark = ""),处理所有数值的显示格式(去除大数字分隔符),但不会覆盖已经被分类变量规则指定的小数位设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 11:10:02