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

如何使用R语言gt()正确格式化5维列联表?

解决5维列联表的gt格式化问题

你用tbl_strata()结合tbl_cross()的方式本质是借助gtsummary生成汇总表,若需要更贴合预期的格式,可通过两种方式实现:

方案一:修正gtsummary转gt的流程

只需调整strata参数的传入形式,并将结果转为gt对象即可:

library(dplyr)
library(gtsummary)
library(gt)

tab <- data.frame(tab)
tab.test <- tab %>%
  tbl_strata(
      strata = c(Touch.Time, Quarter, Off.Dribble), # 改为向量形式传入分层变量
      .tbl_fun = ~ .x %>% tbl_cross(Zone, Closest.Defender.Distance, margin = NULL)
    ) %>%
  as_gt() # 转换为gt对象

# 可选:美化表格样式
tab.test %>%
  tab_header(title = "NBA 5维列联表") %>%
  tab_options(table.width = px(800))

方案二:直接用gt构建分层分段表格(更灵活)

这种方式可完全自定义分层展示的样式,步骤如下:

  1. 预处理数据
library(dplyr)
library(gt)
library(tidyr)
library(glue)

# 将列联表转为带频数的数据框
tab_df <- data.frame(tab)

# 获取所有分层变量的唯一组合
strata_groups <- tab_df %>%
  distinct(Touch.Time, Quarter, Off.Dribble) %>%
  arrange(Touch.Time, Quarter, Off.Dribble)
  1. 循环生成分层交叉表
# 初始化空gt对象
final_table <- gt()

# 遍历每个分层组合,添加对应分段
for (i in 1:nrow(strata_groups)) {
  current_group <- strata_groups[i, ]
  
  # 筛选当前分层数据并转为宽格式(防守距离为列,区域为行)
  current_data <- tab_df %>%
    filter(Touch.Time == current_group$Touch.Time,
           Quarter == current_group$Quarter,
           Off.Dribble == current_group$Off.Dribble) %>%
    pivot_wider(
      names_from = Closest.Defender.Distance,
      values_from = Freq,
      values_fill = 0 # 缺失频数补0
    ) %>%
    select(Zone, everything())
  
  # 添加分段到gt表格
  final_table <- final_table %>%
    tab_add_section(
      title = glue("触球时间: {current_group$Touch.Time} | 节次: {current_group$Quarter} | 是否运球后出手: {current_group$Off.Dribble}"),
      data = current_data
    )
}

# 美化表格
final_table <- final_table %>%
  tab_header(
    title = "NBA 5维列联表",
    subtitle = "按触球时间、节次、运球出手状态分层展示区域与防守距离的频数分布"
  ) %>%
  tab_options(
    section.title.font.size = 12,
    table.font.size = 10,
    section.border.top.width = px(1),
    section.border.top.color = "#cccccc"
  )

生成的表格会按每个分层组合生成独立分段,每个分段内展示对应区域与防守距离的交叉频数,结构清晰且符合5维列联表的展示逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 04:57:41