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

R新手求助:如何制作清晰的3个分类变量计数描述性表格?

分类变量描述性表格优化方案(解决合并后NA问题)

你用bind_rows合并三个列名不同的数据框,导致每行只有一列有值、其余全是NA,这是表格混乱的核心原因。下面提供两种高效实现方法:

方法一:用gt_summary快速生成标准化描述性表格(推荐)

gt_summary的*tbl_summary()*专门用于生成数据概况表格,无需手动拆分合并,一步到位,适合新手。

代码示例:

# 加载所需包
library(gtsummary)
library(dplyr)

# 生成包含性别、年龄、种族的描述性表格
tbl_summary(
  hais,
  # 指定要分析的分类变量
  include = c(Q41, Q42, Q45),
  # 替换变量名为易懂标签
  label = list(
    Q41 ~ "性别",
    Q42 ~ "年龄组",
    Q45 ~ "种族"
  ),
  # 设置分类变量的统计格式(计数+百分比)
  statistic = all_categorical() ~ "{n} ({p}%)"
) %>%
  add_title("样本基本特征概况")

关键说明:

  • include:指定纳入分析的变量(对应你的Q41性别、Q42年龄、Q45种族)
  • label:将原始变量名替换为友好的中文标签,提升可读性
  • statistic:同时展示计数和百分比,比单纯计数更具参考价值
  • 生成的表格自动按变量分组,结构清晰无NA值

方法二:手动整理数据后用gt包生成表格

如果坚持用gt包手动实现,需先将三个变量的计数数据整理为统一结构,再合并:

代码示例:

library(dplyr)
library(gt)

# 整理性别数据
sex_data <- hais %>%
  count(Q41) %>%
  mutate(变量类别 = "性别", 类别选项 = as.character(Q41)) %>%
  select(变量类别, 类别选项, Count = n)

# 整理年龄组数据
age_data <- hais %>%
  count(Q42) %>%
  mutate(变量类别 = "年龄组", 类别选项 = as.character(Q42)) %>%
  select(变量类别, 类别选项, Count = n)

# 整理种族数据
race_data <- hais %>%
  count(Q45) %>%
  mutate(变量类别 = "种族", 类别选项 = as.character(Q45)) %>%
  select(变量类别, 类别选项, Count = n)

# 合并统一结构的数据(无NA)
combined_data <- bind_rows(sex_data, age_data, race_data)

# 用gt生成并美化表格
gt(combined_data) %>%
  group_by(变量类别) %>%
  cols_label(
    变量类别 = "变量",
    类别选项 = "分类",
    Count = "计数"
  ) %>%
  tab_header(title = "样本分类变量计数概况")

关键说明:

  • 给每个变量数据新增变量类别列,标记所属分类(性别/年龄/种族)
  • 统一列名后再合并,避免出现NA值
  • 用group_by在gt表格中按变量类别分组,结构更清晰

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 22:45:24