Twoway estpost tabstat-esttab:保留变量标签
Twoway estpost tabstat-esttab: retain variable labels
我想按产地描述汽车的特征,并以乳胶形式检索结果table:
sysuse auto
estpost tabstat price trunk, by(foreign) statistics(mean sd) columns(statistics) listwise nototal
esttab using test.txt, main(mean) aux(sd)
在 estpost 之后,我已经感觉到标签不见了:它正确显示值标签“国内”和“国外”,但只是将变量列为“价格”和“trunk”而不是“价格” ”和“中继 space”。
我在网上看到过这个问题,但没有一个令人满意的解决方案。有些人建议 fsum
,但这实际上不允许乳胶,也没有交叉制表(按类别 y 表示 x)。
我该如何解决这个问题?
我将接受者的答案自动化如下:
local varlabels
foreach var in price trunk {
local varlabels `"`varlabels' `var' "`:variable label `var''""'
}
varlabels
选项允许您添加自定义标签。在 estpost
命令之后,估计值的名称如下所示:
. mat l e(mean)
e(mean)[1,4]
Domestic: Domestic: Foreign: Foreign:
price trunk price trunk
mean 6072.4231 14.75 6384.6818 11.409091
您可以通过添加一些代码将这些名称替换为变量标签:
sysuse auto
estpost tabstat price trunk, by(foreign) statistics(mean sd) columns(statistics) listwise nototal
foreach name in `:colfullnames e(mean)' {
foreach var in price trunk {
if strpos("`name'", "`var'") > 0 {
local varlabels `"`varlabels' `name' "`:variable label `var''""'
}
}
}
di `"`varlabels'"'
esttab, main(mean) aux(sd) varlabels(`varlabels')
结果:
. di `"`varlabels'"'
Domestic:price "Price" Domestic:trunk "Trunk space (cu. ft.)" Foreign:price "Price" Foreign:trunk "Trunk space (cu. ft.)"
. esttab, main(mean) aux(sd) varlabels(`varlabels')
----------------------------
(1)
----------------------------
Domestic
Price 6072.4
(3097.1)
Trunk.. ft.) 14.75
(4.306)
----------------------------
Foreign
Price 6384.7
(2621.9)
Trunk.. ft.) 11.41
(3.217)
----------------------------
N 74
----------------------------
mean coefficients; sd in parentheses
* p<0.05, ** p<0.01, *** p<0.001
在esttab中添加选项unstack
时,Domestic和Foreign被用作列名,系数的名称只有price和trunk,所以你可以这样做:
esttab, main(mean) aux(sd) unstack varlabels(price "`:variable label price'" trunk "`:variable label trunk'")
我想按产地描述汽车的特征,并以乳胶形式检索结果table:
sysuse auto
estpost tabstat price trunk, by(foreign) statistics(mean sd) columns(statistics) listwise nototal
esttab using test.txt, main(mean) aux(sd)
在 estpost 之后,我已经感觉到标签不见了:它正确显示值标签“国内”和“国外”,但只是将变量列为“价格”和“trunk”而不是“价格” ”和“中继 space”。
我在网上看到过这个问题,但没有一个令人满意的解决方案。有些人建议 fsum
,但这实际上不允许乳胶,也没有交叉制表(按类别 y 表示 x)。
我该如何解决这个问题?
我将接受者的答案自动化如下:
local varlabels
foreach var in price trunk {
local varlabels `"`varlabels' `var' "`:variable label `var''""'
}
varlabels
选项允许您添加自定义标签。在 estpost
命令之后,估计值的名称如下所示:
. mat l e(mean)
e(mean)[1,4]
Domestic: Domestic: Foreign: Foreign:
price trunk price trunk
mean 6072.4231 14.75 6384.6818 11.409091
您可以通过添加一些代码将这些名称替换为变量标签:
sysuse auto
estpost tabstat price trunk, by(foreign) statistics(mean sd) columns(statistics) listwise nototal
foreach name in `:colfullnames e(mean)' {
foreach var in price trunk {
if strpos("`name'", "`var'") > 0 {
local varlabels `"`varlabels' `name' "`:variable label `var''""'
}
}
}
di `"`varlabels'"'
esttab, main(mean) aux(sd) varlabels(`varlabels')
结果:
. di `"`varlabels'"'
Domestic:price "Price" Domestic:trunk "Trunk space (cu. ft.)" Foreign:price "Price" Foreign:trunk "Trunk space (cu. ft.)"
. esttab, main(mean) aux(sd) varlabels(`varlabels')
----------------------------
(1)
----------------------------
Domestic
Price 6072.4
(3097.1)
Trunk.. ft.) 14.75
(4.306)
----------------------------
Foreign
Price 6384.7
(2621.9)
Trunk.. ft.) 11.41
(3.217)
----------------------------
N 74
----------------------------
mean coefficients; sd in parentheses
* p<0.05, ** p<0.01, *** p<0.001
在esttab中添加选项unstack
时,Domestic和Foreign被用作列名,系数的名称只有price和trunk,所以你可以这样做:
esttab, main(mean) aux(sd) unstack varlabels(price "`:variable label price'" trunk "`:variable label trunk'")