【问题标题】:Using Stata's esttab, add dollar sign to cell format, export to Latex使用Stata的esttab,将美元符号添加到单元格格式,导出到Latex
【发布时间】:2017-04-09 19:35:07
【问题描述】:

我的顾问希望我在汇总统计表中添加美元符号。我生成这个表并使用 Stata 的 esttab 命令将其导出到 Latex。

我需要 1) 将美元符号添加到某些结果单元格(不是全部)和 2) 确保 Latex 可以处理美元符号。

我认为 2 可以使用替代选项来完成,但我不知道如何做 1。这是我试图用来解决这个问题的一些最小代码。

sysuse auto, clear

estpost summarize price mpg weight length if foreign==0
est store A
estpost summarize price mpg weight length if foreign==1
est store B

esttab A B  using $root/Outputs/test.tex, replace ///  //a file path on my machine
cells("mean (fmt(%9.0fc %9.2fc %9.0fc))" "sd(par fmt(%9.0fc %9.2fc %9.0fc))") ///
mtitle("Domestic" "Foreign") ///
mgroups("Type", pattern(1 0) prefix(\multicolumn{@span}{c}{) suffix(}) span erepeat( \cmidrule(lr){@span})) ///
nonumber booktabs f label  collabels(none)

eststo clear

这会产生:

                    &\multicolumn{2}{c}{Type} \\\cmidrule(lr){2-3}
                    &\multicolumn{1}{c}{Domestic}&\multicolumn{1}{c}{Foreign}\\
\midrule
Price               &       6,072&       6,385\\
                    &     (3,097)&     (2,622)\\
Mileage (mpg)       &       19.83&       24.77\\
                    &      (4.74)&      (6.61)\\
Weight (lbs.)       &       3,317&       2,316\\
                    &       (695)&       (433)\\
Length (in.)        &         196&         169\\
                    &        (20)&        (14)\\
\midrule
Observations        &          52&          22\\

我想得到它,以便输出在 6,072 和 6,385 前面有 \$

我看到一些关于Statalist 的关于图表解决方法的讨论,但没有关于esttab 的讨论。有人还提到创建“自定义格式”,但我似乎无法在任何地方找到相关文档。

【问题讨论】:

标签: latex stata


【解决方案1】:

我曾经遇到过类似的问题:我想根据显着性级别对单元格进行不同的着色。最后,我能想出的最简单的自动化解决方案是修改 esttab 代码......事实上,这比听起来容易。

estout.ado中查找以下代码:

if `:length local thevalue'<245 {
    local thevalue: di `fmt_m' `"`macval(thevalue)'"'
}

之后你可以插入,例如

local thevalue `"\$`macval(thevalue)'\$"'

这会产生:

                    &\multicolumn{2}{c}{Type} \\\cmidrule(lr){2-3}
                    &\multicolumn{1}{c}{Domestic}&\multicolumn{1}{c}{Foreign}\\
\midrule
Price               &$       6,072$&$       6,385$\\
                    &$     (3,097)$&$     (2,622)$\\
Mileage (mpg)       &$       19.83$&$       24.77$\\
                    &$      (4.74)$&$      (6.61)$\\
Weight (lbs.)       &$       3,317$&$       2,316$\\
                    &$       (695)$&$       (433)$\\
Length (in.)        &$         196$&$         169$\\
                    &$        (20)$&$        (14)$\\
\midrule
Observations        &          52&          22\\

(导出前别忘了program drop estout,这样.ado会重新加载)

因此,主表中的所有数值都封装在 $ 符号中。如果您只想要特定的值,您可以做一个简单的正则表达式条件。例如,如果您只想捕获那些有逗号的值(无论出于何种原因),您可以这样做:

if strpos("`macval(thevalue)'", ",") {
    local thevalue `"\$`macval(thevalue)'\$"'
}

您也可以添加自己的选项(就在 estout.ado 的开头),这样修改后的行为就不会一直触发。

【讨论】:

  • 倾斜评论:这自然是程序员所做的,改变程序来做他们想做的不同的事情。警告(对于那些需要它的人)是考虑如果原始程序更新,您自己的更改需要再次编辑。
  • @Nick Cox 使用差异+补丁,我想。如果可以为添加提供一个很好的案例,也许包作者会考虑添加该选项...
  • 确实如此。您需要与他沟通(在这种情况下)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-09
  • 1970-01-01
相关资源
最近更新 更多