如何将Stata回归结果导出至Excel的多个工作表
Stata中用outreg2将多因变量回归结果输出到单个Excel的不同工作表
解决方案1:利用outreg2的sheet()选项(推荐,需较新版本)
如果你的outreg2版本支持sheet()参数(多数新版都支持),可以直接修改循环代码,将所有结果输出到同一个Excel文件的指定工作表:
* 先清理可能存在的旧输出文件 cap erase "./here goes my working directory/combined_results.xlsx" foreach y in y1 y2 { reg `y' x1 outreg2 using "./here goes my working directory/combined_results.xlsx", /// excel replace sheet(`y') ctitle(Model 1) reg `y' x1 x2 outreg2 using "./here goes my working directory/combined_results.xlsx", /// excel append sheet(`y') ctitle(Model 2) reg `y' x1 x2 x3 outreg2 using "./here goes my working directory/combined_results.xlsx", /// excel append sheet(`y') ctitle(Model 3) }
代码说明:
- 所有回归结果统一输出到
combined_results.xlsx文件 sheet(y')指定每个因变量对应工作表的名称(即y1和y2`)- 第一次处理单个因变量时用
replace创建对应工作表,后续模型用append在同一张工作表内追加结果
解决方案2:用putexcel合并独立文件(兼容旧版outreg2)
如果你的outreg2确实不支持sheet()选项,可以先保留原代码生成独立文件,再通过putexcel合并到同一个文件的不同工作表:
* 第一步:生成每个因变量的独立回归结果文件(和原代码一致) foreach y in y1 y2 { reg `y' x1 outreg2 using "./here goes my working directory/results_`y'.xlsx", /// excel replace ctitle(Model 1) reg `y' x1 x2 outreg2 using "./here goes my working directory/results_`y'.xlsx", /// excel append ctitle(Model 2) reg `y' x1 x2 x3 outreg2 using "./here goes my working directory/results_`y'.xlsx", /// excel append ctitle(Model 3) } * 第二步:合并到同一个Excel文件的不同工作表 cap erase "./here goes my working directory/combined_results.xlsx" putexcel set "./here goes my working directory/combined_results.xlsx", replace foreach y in y1 y2 { * 读取单个结果文件的内容 putexcel load "./here goes my working directory/results_`y'.xlsx", sheet("Sheet1") into(A1) * 将内容写入合并文件的对应工作表 putexcel save, sheet(`y') } * 可选:删除临时生成的独立文件 foreach y in y1 y2 { cap erase "./here goes my working directory/results_`y'.xlsx" }
代码说明:
- 先按原逻辑生成每个因变量的独立Excel文件
- 创建目标合并文件,循环读取每个独立文件的内容,写入到对应名称的工作表
- 最后可选择删除临时文件,避免冗余
内容的提问来源于stack exchange,提问作者Jorge Paredes
相关产品推荐
相关产品推荐

