在R中基于多分组变量生成指定格式描述性表格的方法
生成层级结构描述性表格的两种方法
方法一:使用janitor + dplyr
先通过dplyr完成层级分组的均值计算,再用janitor美化表格格式:
# 加载所需包 library(dplyr) library(janitor) # 生成层级分组的均值汇总表 summary_table <- df %>% group_by(var1, var2) %>% summarize(var3_mean = mean(var3), .groups = "drop") %>% # 转为janitor的tabyl格式以美化 tabyl(var1, var2, var3_mean) %>% # 可选:添加行/列总计 adorn_totals(where = c("row", "col")) %>% # 格式化均值为两位小数 adorn_rounding(digits = 2) # 查看结果 summary_table
这段代码会生成以var1为第一层级、var2为第二层级的交叉表格,每个单元格展示对应分组下的var3均值,可按需添加总计行/列,格式规整易读。
方法二:使用gtsummary包(适配出版级表格)
gtsummary的tbl_strata()函数可快速实现层级分组汇总,自动生成结构化美观表格:
# 加载包 library(gtsummary) # 生成层级结构的均值表格 tbl_strata( data = df, # 第一层级分组变量:var1 strata = var1, # 定义每个层级内的表格逻辑:按var2分组展示var3均值 .tbl_fun = function(data) { data %>% tbl_summary( by = var2, include = var3, # 定义统计量为均值(保留两位小数,如需标准差可改为"{mean} ({sd})") statistic = list(all_continuous() ~ "{mean}"), label = list(var3 ~ "var3 均值") ) } )
这段代码会生成分层表格:每个var1类别作为独立块,块内按var2类别展示var3均值。表格自带美观格式,还可通过as_gt()转为gt对象进一步自定义样式。若需调换层级顺序,只需互换strata和by的变量即可。
内容的提问来源于stack exchange,提问作者spindoctor
相关产品推荐
相关产品推荐

