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

使用tbl_summary()计算分组列求和时的类型识别与报错问题

解决tbl_summary()生成分组求和统计表格的问题

你的需求是按With_assistant分组,计算correct_answers和incorrect_answers的总和,用tbl_summary()生成对应统计表格。之前的尝试存在统计量指定错误的问题,以下是两种可行的解决方案:

方法1:先分组求和再生成表格

你已经写出了分组求和的核心代码,只需对求和后的结果使用tbl_summary()即可生成目标表格:

library(gtsummary)
library(tidyverse)

test <- data.frame(
  "With_assistant" = c(TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE),
  "correct_answers" = c(2,4,5,6,1,2,7,2,1,2,3),
  "incorrect_answers" = c(1,2,1,5,3,1,2,5,3,2,4)
)

# 先按分组计算求和结果
summary_df <- test %>%
  group_by(With_assistant) %>%
  summarize(
    total_correct = sum(correct_answers, na.rm = TRUE),
    total_incorrect = sum(incorrect_answers, na.rm = TRUE)
  )

# 用tbl_summary生成格式化表格
summary_df %>%
  tbl_summary(
    by = With_assistant,
    type = everything() ~ "continuous",
    statistic = all_continuous() ~ "{sum}",
    missing = "no"
  )

方法2:直接在tbl_summary()中实现分组求和

无需提前做数据汇总,通过自定义统计函数在tbl_summary()内直接计算分组总和:

library(gtsummary)
library(tidyverse)

test <- data.frame(
  "With_assistant" = c(TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE),
  "correct_answers" = c(2,4,5,6,1,2,7,2,1,2,3),
  "incorrect_answers" = c(1,2,1,5,3,1,2,5,3,2,4)
)

test %>%
  tbl_summary(
    by = With_assistant,
    type = c(correct_answers, incorrect_answers) ~ "continuous",
    # 自定义统计函数,计算每组的求和值
    statistic = all_continuous() ~ function(x) sum(x, na.rm = TRUE),
    missing = "no"
  )

之前尝试的问题说明

  • 第一次尝试用{n}作为统计量,{n}的作用是计算每个数值的出现次数,并非求和,因此结果不符合需求;
  • 第二次尝试的报错源于statistic参数的写法错误,{n}不是合法的统计量模板格式,需要使用字符串模板或自定义函数来指定求和逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 04:31:01