R语言使用modelsummary::datasummary_balance如何移除表头N统计量
R语言
datasummary_balance删除表头N标注的解决方案 以下是3种可直接落地的实现方案,按实现复杂度从低到高排列:
方案1:直接通过col_names参数覆盖默认表头
这是最简方案,直接在调用函数时传入自定义列名即可替换掉默认带N=的表头,无需后续二次修改:
library(modelsummary) # 调用示例数据 data("lalonde", package = "MatchIt") # 自定义列名替换默认带N的表头,列名数量需和输出列数量对应 datasummary_balance( formula = ~treat, data = lalonde, # 列名依次对应:变量名、控制组统计列、处理组统计列、标准化均值差列 col_names = c("变量", "控制组", "处理组", "标准化均值差") )
注:可先运行一次不带
col_names参数的函数,确认输出列的数量和顺序后再配置自定义列名,适配不同分组、不同统计量输出的场景。
方案2:修改生成的表格对象的表头
如果已经生成了表格对象(如gt、kableExtra格式),可以直接对表格对象的列名做修改:
适配gt后端示例
# 生成gt格式的表格对象 tab <- datasummary_balance(~treat, data = lalonde, output = "gt") # 替换指定列的表头 tab <- tab |> gt::cols_label( `Control (N=429)` = "控制组", `Treated (N=185)` = "处理组" ) # 输出修改后的表格 tab
适配kableExtra后端示例
# 生成kableExtra格式的表格对象 tab <- datasummary_balance(~treat, data = lalonde, output = "kableExtra") # 直接批量替换列名 colnames(tab) <- c("变量", "控制组", "处理组", "标准化均值差") # 输出修改后的表格 tab
方案3:用datasummary自定义平衡表结构
如果需要同时调整表格的统计量、布局等其他内容,可以直接用底层的datasummary函数自定义平衡表,完全避免默认表头生成:
datasummary( # 左侧填入需要展示的协变量 age + educ + black + hisp + married + nodegr + re74 + re75 + re78 ~ # 右侧填入分组+需要计算的统计量,diffmean为组间均值差 treat*(mean + sd) + diffmean, data = lalonde, title = "组间平衡表", # 完全自定义表头 col_names = c("变量", "控制组均值", "控制组标准差", "处理组均值", "处理组标准差", "组间均值差") )
内容的提问来源于stack exchange,提问作者Danny Klinenberg
相关产品推荐
相关产品推荐

