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

R语言table1函数:如何排除NA、保留1位小数并添加置信区间?

解决table1函数的小数位数设置与置信区间添加问题

一、设置1位小数位数

你的现有代码已通过PCTnoNA%实现排除缺失值,要控制小数位数,需自定义渲染函数,用sprintf()指定格式(%.1f表示保留1位小数)。修改后的代码如下:

# 自定义连续变量渲染函数,控制小数位数为1位
render_continuous <- function(x) {
  x <- na.omit(x)
  # 计算并格式化统计量
  mean_sd <- sprintf("%.1f [%.1f]", mean(x), sd(x))
  median_iqr <- sprintf("%.1f [%.1f, %.1f]", median(x), quantile(x, 0.25), quantile(x, 0.75))
  min_max <- sprintf("%.1f, %.1f", min(x), max(x))
  # 返回结果列表
  c("Mean [SD]" = mean_sd, "Median [Q25, Q75]" = median_iqr, "Min, Max" = min_max)
}

# 自定义分类变量渲染函数,百分比保留1位小数
render_categorical <- function(x) {
  x <- na.omit(x)
  freq <- table(x)
  pct <- prop.table(freq)*100
  # 格式化频率和百分比
  sapply(names(freq), function(n) sprintf("%d (%.1f%%)", freq[n], pct[n]))
}

# 调用table1
table1(~ . | Sex.x, data = adulttab[-1],
       render.categorical = render_categorical,
       render.continuous = render_continuous)

说明:

  • 连续变量:通过sprintf("%.1f", ...)强制所有数值保留1位小数;
  • 分类变量:百分比部分用%.1f%%控制1位小数,同时保留原始频率;
  • 所有统计量计算前通过na.omit(x)确保排除缺失值,与你的需求一致。

二、添加均值的95%置信区间

要在table1中加入置信区间,只需在自定义连续变量渲染函数中增加置信区间的计算逻辑,再将其加入返回结果即可:

render_continuous_with_ci <- function(x) {
  x <- na.omit(x)
  n <- length(x)
  mean_val <- mean(x)
  sd_val <- sd(x)
  # 用t分布计算95%置信区间(适配小样本)
  ci_low <- mean_val - qt(0.975, df = n-1)*sd_val/sqrt(n)
  ci_high <- mean_val + qt(0.975, df = n-1)*sd_val/sqrt(n)
  
  # 格式化所有统计量为1位小数
  mean_sd <- sprintf("%.1f [%.1f]", mean_val, sd_val)
  mean_ci <- sprintf("%.1f (%.1f-%.1f)", mean_val, ci_low, ci_high)
  median_iqr <- sprintf("%.1f [%.1f, %.1f]", median(x), quantile(x, 0.25), quantile(x, 0.75))
  min_max <- sprintf("%.1f, %.1f", min(x), max(x))
  
  # 返回包含置信区间的结果
  c("Mean [SD]" = mean_sd, "Mean (95% CI)" = mean_ci, "Median [Q25, Q75]" = median_iqr, "Min, Max" = min_max)
}

# 调用table1
table1(~ . | Sex.x, data = adulttab[-1],
       render.categorical = render_categorical,
       render.continuous = render_continuous_with_ci)

说明:

  • 这里用t分布计算置信区间,适合小样本场景;若为大样本,可替换为正态分布的qnorm(0.975);
  • 置信区间会作为单独一行(Mean (95% CI))出现在连续变量的统计结果中。

三、注意事项

  • 确保adulttab$Sex.x是分类变量(因子类型),若不是可先通过factor(adulttab$Sex.x)转换;
  • 自定义渲染函数可灵活调整,你能根据需求增减统计量或修改格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 18:45:30