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

如何在gtsummary分层表格中按组展示各时间点样本量N?

使用gtsummary在分组列中显示分层样本量的实现方法

这个需求完全可以实现,通过gtsummary的分层处理函数tbl_strata结合自定义统计量或列标签修改,就能在CONTROL和FUTSAL列中展示对应时间点的组内样本量,明确缺失值分布。以下是具体实现方案:

1. 准备示例数据

先构造包含分层变量time、分组变量group及带缺失值观测的数据集:

library(gtsummary)
library(tidyverse)

set.seed(123)
df <- tibble(
  time = rep(c("T0", "T1", "T2"), each = 40),
  group = rep(c("CONTROL", "FUTSAL"), each = 20, times = 3),
  value = rnorm(120) %>% replace(sample(1:120, 15), NA) # 随机生成缺失值
)

2. 方法一:将有效样本量嵌入列标题

针对每个时间分层,计算组内有效样本量(排除缺失值),并修改列标签显示组名+样本量:

df %>%
  tbl_strata(
    strata = time,
    .tbl_fun = function(data) {
      # 计算当前分层下各组的有效样本量
      n_control <- sum(data$group == "CONTROL" & !is.na(data$value))
      n_futsal <- sum(data$group == "FUTSAL" & !is.na(data$value))
      
      data %>%
        tbl_summary(
          by = group,
          include = value,
          statistic = list(all_continuous() ~ "{mean} ({sd})"),
          label = list(value ~ "测量值")
        ) %>%
        # 更新列标题,加入有效样本量
        modify_header(
          CONTROL ~ paste0("CONTROL (N = ", n_control, ")"),
          FUTSAL ~ paste0("FUTSAL (N = ", n_futsal, ")")
        )
    }
  ) %>%
  # 分层标题添加该时间点总观测数
  modify_header(all_strata() ~ "**{strata} (总N = {n})**")

3. 方法二:在统计量上方单独显示有效样本量

通过自定义统计函数,在每组统计量前展示有效样本量:

# 自定义有效样本量统计函数
n_valid <- function(x, ...) paste0("N = ", sum(!is.na(x)))

df %>%
  tbl_strata(
    strata = time,
    .tbl_fun = function(data) {
      data %>%
        tbl_summary(
          by = group,
          include = value,
          statistic = list(all_continuous() ~ c("{n_valid}", "{mean} ({sd})")),
          label = list(value ~ "测量值")
        ) %>%
        modify_header(all_cols() ~ "**{level}**")
    }
  )

4. 方法三:快速添加组总观测数(含缺失值)

如果只需展示组内总观测数(包含缺失值),可直接用add_n函数将样本量嵌入列标题:

df %>%
  tbl_strata(
    strata = time,
    .tbl_fun = function(data) {
      data %>%
        tbl_summary(
          by = group,
          include = value,
          statistic = list(all_continuous() ~ "{mean} ({sd})"),
          label = list(value ~ "测量值")
        ) %>%
        add_n(location = "header") # 将组总样本量添加到列标题
    }
  )

通过以上任意一种方法,都能清晰看到各时间分层下CONTROL和FUTSAL组的样本量,从而明确缺失值所在组(总观测数与有效样本量的差值即为缺失数量)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 05:00:59