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

R语言使用gtsummary制作按国家分组的奖牌及成功次数汇总表问题

解决方法

你原来的代码没有得到预期结果的核心原因是:tbl_summary(by = country)默认把国家作为列分组维度,统计变量作为行维度,和你需要的「行是国家、列是统计指标」的结构完全相反。可以先手动汇总所有需要的统计值,再用gtsummary做表格格式化,代码如下:

library(gtsummary)
library(dplyr)

# 第一步:按国家分组计算所有需要的指标
example_summary <- example %>%
  group_by(country) %>%
  summarise(
    GOLD = sum(Final_Medal == "GOLD", na.rm = TRUE),
    SILVER = sum(Final_Medal == "SILVER", na.rm = TRUE),
    BRONZE = sum(Final_Medal == "BRONZE", na.rm = TRUE),
    Success = sum(Success, na.rm = TRUE),
    Total_Entry = n(),
    .groups = "drop"
  )

# 第二步:用gtsummary格式化汇总表
example_summary %>%
  tbl_summary(
    # 所有列直接展示原始计算值,不做额外统计
    statistic = everything() ~ "{value}",
    type = everything() ~ "numeric"
  ) %>%
  # 修改第一列表头为Country
  modify_header(label = "**Country**") %>%
  bold_labels()

代码说明

  • 统计奖牌数量时加na.rm = TRUE,会自动忽略Final_Medal的NA值,不会把空值计入奖牌数
  • Success是0/1变量,直接求和就是取值为1的记录数
  • n()直接统计每个国家的总记录数,包含所有行
    用你提供的示例数据运行以上代码,会得到CHN的GOLD为1、Success为1、总记录数为3,其余国家对应数值为0,和示例数据的实际情况一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 04:36:03