带有逗号的固定宽度格式,用于在Stata中使用estpost汇总的汇总统计信息

时间:2017-09-25 17:33:13

标签: stata

estpostesttab命令来自SSC上的estout包。

我使用estpost summarize制作摘要统计表。 我被告知读者更喜欢小数作为固定的宽度/精度。 比方说,前导零和三位小数。 选项fmt(%9.3f)给出前导零和固定宽度, 但报告大数字没有逗号。 选项fmt(%12.3gc)提供逗号, 但不报告固定宽度小数。

有没有办法在fmt()中更精细地使用esttab? 比方说,对于超过某个阈值的数字使用%12.3gc,否则使用%9.3f? 这可能会产生我没想到的问题。

以下是我如何使用estpost summarize以及每种方法的缺点的示例。

sysuse auto, clear
expand 1000

eststo clear
estpost summarize price rep78, detail
eststo

/* gives mean/median/SD with fixed number of decimals */
/* but must manually add commas to large numbers (price) */
local rightwidth_nocommas ///
    label noobs nonumbers nomtitles ///
    cell("count(fmt(%9.3gc) label(Obs.)) mean(fmt(%9.3f) label(Mean)) p50(fmt(%9.3f) label(Median)) sd(fmt(%9.3f) label(Std. Dev.))")
esttab, `rightwidth_nocommas'

. esttab, `rightwidth_nocommas'

------------------------------------------------------------------------
                             Obs.         Mean       Median    Std. Dev.
------------------------------------------------------------------------
Price                      74,000     6165.257     5006.500     2929.519
Repair Record 1978         69,000        3.406        3.000        0.983
------------------------------------------------------------------------



/* gives commas to large numbers (price) */
/* but must pad mean/median/SD to get a fixed number of decimals */
local commas_wrongwidth ///
    label noobs nonumbers nomtitles ///
    cell("count(fmt(%9.3gc) label(Obs.)) mean(fmt(%9.3gc) label(Mean)) p50(fmt(%9.3gc) label(Median)) sd(fmt(%9.3gc) label(Std. Dev.))")
esttab, `commas_wrongwidth'

. esttab, `commas_wrongwidth'

------------------------------------------------------------------------
                             Obs.         Mean       Median    Std. Dev.
------------------------------------------------------------------------
Price                      74,000        6,165        5,007        2,930
Repair Record 1978         69,000         3.41            3         .983
------------------------------------------------------------------------

1 个答案:

答案 0 :(得分:1)

这是一个使用fc表示所有内容的演示,计数不需要gc,并使用一组周围的括号而不是单元格参数周围的引号来强制将四个项目放到一行上

. esttab, ///
>     label noobs nonumbers nomtitles               ///
>     cell((                                        ///
>            count(fmt(%9.0fc)  label(Obs.))        ///
>             mean(fmt(%10.3fc) label(Mean))        ///
>              p50(fmt(%8.1fc)  label(Median))      ///
>               sd(fmt(%10.3fc) label(Std. Dev.))   ///
>          ))

------------------------------------------------------------------------
                             Obs.         Mean       Median    Std. Dev.
------------------------------------------------------------------------
Price                      74,000    6,165.257      5,006.5    2,929.519
Repair Record 1978         69,000        3.406          3.0        0.983
------------------------------------------------------------------------