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

