首页 > 解决方案 > Twoway estpost tabstat-esttab:保留变量标签

问题描述

我想按原产地描述汽车的特征,并将结果检索为乳胶表:

sysuse auto 
estpost tabstat price trunk, by(foreign) statistics(mean sd) columns(statistics) listwise nototal 
esttab using test.txt, main(mean) aux(sd)

在 estpost 之后,我已经感觉到标签丢失了:它正确显示了值标签“国内”和“外国”,但只是将变量列为“价格”和“主干”而不是“价格”和“主干空间” ”。

我在网上看到过这个问题,但没有一个令人满意的解决方案。有人建议fsum,但这并没有真正允许乳胶,也没有交叉制表(x 类别 y 的平均值)。我怎样才能解决这个问题?

我将接受的答案自动化如下:

local varlabels
foreach var in price trunk {
        local varlabels `"`varlabels' `var' "`:variable label `var''""'       
}

标签: stata

解决方案


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时,Domain 和 Foreign 用作列名,系数的名称只有 price 和 trunk,因此您可以执行以下操作:

esttab, main(mean) aux(sd) unstack varlabels(price "`:variable label price'" trunk "`:variable label trunk'")

推荐阅读