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

如何将bal.tab生成的列表格式结果导出为Excel文件?

解决bal.tab结果导出为Excel的最简方案

核心思路

bal.tab()返回的列表中,$Balance是最关键的平衡特征汇总表,先提取这个数据框,再用Excel导出工具直接写入文件即可。以下是两种无依赖问题的最简方案:


方案一:使用openxlsx直接导出

openxlsx是R中常用的Excel操作包,功能全面且稳定,直接调用即可避开expss的依赖问题:

library(cobalt)
library(WeightIt)
library(openxlsx)

# 生成加权平衡结果
data("lalonde", package = "cobalt")
W.out <- weightit(treat ~ age + educ + race + married + nodegree + re74 + re75,
                  data = lalonde, estimand = "ATT", method = "ps")
balanced_population <- bal.tab(W.out)

# 提取核心平衡统计表
balance_table <- balanced_population$Balance

# 导出到Excel文件
write.xlsx(balance_table, file = "balanced_population.xlsx", overwrite = TRUE)

方案二:使用writexl轻量导出

如果openxlsx仍有安装/加载问题,推荐用writexl——纯R实现,无外部依赖,安装和使用更简单:

library(cobalt)
library(WeightIt)
library(writexl)

# 生成加权平衡结果(同上)
data("lalonde", package = "cobalt")
W.out <- weightit(treat ~ age + educ + race + married + nodegree + re74 + re75,
                  data = lalonde, estimand = "ATT", method = "ps")
balanced_population <- bal.tab(W.out)

balance_table <- balanced_population$Balance

# 导出到Excel文件
write_xlsx(balance_table, path = "balanced_population.xlsx")

扩展:导出多个结果到不同Sheet

如果需要同时导出样本量、权重信息等其他bal.tab内容,可以用openxlsx将多个表格写入同一Excel的不同工作表:

library(openxlsx)

# 创建工作簿
wb <- createWorkbook()

# 添加平衡统计表Sheet
addWorksheet(wb, "平衡特征汇总")
writeData(wb, "平衡特征汇总", balance_table)

# 添加样本量信息Sheet
addWorksheet(wb, "样本量统计")
writeData(wb, "样本量统计", as.data.frame(balanced_population$Sample.Size))

# 保存工作簿
saveWorkbook(wb, "full_balance_results.xlsx", overwrite = TRUE)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 06:02:51