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
相关产品推荐
相关产品推荐

