说我有这些数据:
clear
set more off
input ///
float (b a_first a_second a_third control)
4 3 2 5 7
6 3 4 2 4
7 6 5 2 5
1 4 2 3 6
7 6 1 4 1
8 8 7 4 4
end
我想使用outreg2创建一个表:
foreach i in first second third {
reg b a_`i'
outreg2 using filename, replace
reg b a_`i' control
outreg2 using filename, append
}
(请注意,`filename'是您选择的文件名。)这不是我想要的。对于每次迭代,它都会创建一个只有两列的表。下一次,它用两个新的回归替换原来的那些。
我需要它做的只是替换第一次在该开关之后和之后追加:
reg b a_first
outreg2 using filename, replace
reg b a_first control
outreg2 using filename, append
reg b a_second
outreg2 using filename, append
reg b a_second control
outreg2 using filename, append
reg b a_third
outreg2 using filename, append
reg b a_third control
outreg2 using filename, append
我能想到的最好的方法是创建一个本地,如果replace
取值i==first
,并在第一个outreg2
语句中使用此本地。有更简单的方法吗?
答案 0 :(得分:1)
为了完整性,请注意一个经典的替代方案,即在循环外进行第一次迭代:
reg b a_first
outreg2 using filename, replace
reg b a_first control
outreg2 using filename, append
foreach v in second third {
reg b a_`v'
outreg2 using filename, append
reg b a_`v' control
outreg2 using filename, append
}