我正在使用Stata,并有这个问题:
假设我有两个结果变量y1
和y2
,以及三个回归变量x1
、x2
和x3
(您可以模拟它们,因为这个问题的数据并不重要)
然后,假设我使用foreach循环进行这些回归
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文档,一个用于y1
,另一个用于y2
,每个excel文档将有一个包含3列回归表的工作表。
我怎么可能只有一个包含两个工作表的excel文档,一个工作表包含y1
的回归表,另一个工作表包含y2
的回归表?
我在outreg2文档(excel部分)中没有看到sheet
选项。
(In我的情况有很多回归,因此复制并粘贴到单个文档中不是一个可行的选项)
提前感谢!!
2条答案
按热度按时间cygmwpex1#
据我所知,在
outreg2
中没有办法做到这一点,但即使有,我认为有一个更好的方法来做到这一点。我建议当在Excel中使用输出时,也允许手动更改,您应该将原始输出文件与最终文件分开。因此,在代码中,为每个输出创建一个文件。
这将在
/raw/
文件夹中生成6个文件。然后创建文件
./results/results.xlsx
。这是您的最终文件。然后为每个文件创建一个工作表。在工作表中您希望"./results/raw/results_a_y1.xlsx"
中的结果的单元格A1中添加公式=[results_a_y1.xlsx]Sheet1!A1
。然后您可以将其扩展到您想要的任意多个单元格。您可能需要手动执行此操作才能使其工作(例如,请参见here)。你会在原始文件中的空单元格中得到过多的
0
。只需删除那里的公式。此工作流程的好处是您可以编辑最终文件的颜色、单元格大小、线条、手动标题等,而不会在下次重新运行Stata脚本时覆盖这些编辑,因为数据脚本只覆盖原始文件。
mzsu5hc02#
不太确定命令,但您可以以相对简单的方式将多个Excel文件合并为一个文件中的电子表格,请选中以下链接中显示的第二个选项:
https://www.ablebits.com/office-addins-blog/merge-multiple-csv-files-excel/