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

如何为table1中Sum类型的连续数值添加逗号千位分隔符

给table1表格的Sum类型数值添加千位分隔符

需求说明

使用table1包生成分组汇总表格时,需要为连续变量的**Sum(总和)**统计值添加千位分隔符,提升数值可读性。

原代码

library(boot) 
library(table1)

melanoma2 <- melanoma
melanoma2$status <- 
  factor(melanoma2$status, 
         levels=c(2,1,3),
         labels=c("Alive", # Reference
                  "Melanoma death", 
                  "Non-melanoma death"))
table1(~ age + thickness | status, render.continuous=c(.="Sum"), data=melanoma2)

解决方案

通过自定义渲染函数替代默认的"Sum",对求和结果进行千位分隔格式化,有两种实现方式:

方式一:使用base R原生函数

无需额外安装包,用formatC()完成格式化:

library(boot) 
library(table1)

melanoma2 <- melanoma
melanoma2$status <- 
  factor(melanoma2$status, 
         levels=c(2,1,3),
         labels=c("Alive", # Reference
                  "Melanoma death", 
                  "Non-melanoma death"))

# 自定义带千位分隔符的Sum渲染函数
sum_with_comma <- function(x) {
  total <- sum(x, na.rm = TRUE)
  # formatC参数:big.mark设置千位分隔符,digits控制小数位数(这里设为0)
  formatC(total, format = "f", big.mark = ",", digits = 0)
}

# 调用table1时使用自定义函数
table1(~ age + thickness | status, 
       render.continuous = c(. = sum_with_comma), 
       data = melanoma2)

方式二:使用scales包简化代码

scales包的comma()函数可以直接生成带千位分隔符的数值:

library(boot) 
library(table1)
library(scales) # 需先安装:install.packages("scales")

melanoma2 <- melanoma
melanoma2$status <- 
  factor(melanoma2$status, 
         levels=c(2,1,3),
         labels=c("Alive", # Reference
                  "Melanoma death", 
                  "Non-melanoma death"))

# 直接在render.continuous中定义匿名函数
table1(~ age + thickness | status, 
       render.continuous = c(. = function(x) comma(sum(x, na.rm = TRUE))), 
       data = melanoma2)

补充说明

  • 如果需要保留小数位数,可调整对应参数:
    • base R方式:修改formatC()的digits值(如digits=1保留1位小数)
    • scales包方式:给comma()添加accuracy参数(如comma(..., accuracy=0.1))
  • 函数中加入na.rm=TRUE是为了忽略数据中的缺失值,避免求和结果为NA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 19:15:11