首页 > 解决方案 > 如何使用 esttab 或 estout 从数据中导出

问题描述

假设我有这些数据:

sysuse auto2, clear
gen name = substr(make, 1,3)
drop if missing(rep78)
gen n = 1
collapse (mean) mpg (sum) (n), by(name)
replace name = "a b: c" if _n==1

我想使用esttabor直接从数据中将它们导出到 .rtf(.tex 等)文件estout。这可能吗?我想这样做的关键原因是我希望能够保留行名中的空格。如果能够选择在 1,000 之后使用逗号,那就太好了。

一种部分方法是将数据保存到矩阵中,然后使用导出矩阵esttab,但是我需要这个额外的步骤吗?

mkmat mpg n, matrix(mat) rownames(name)
esttab matrix(mat)

这样做的一个问题是它用 _ 替换了行名中的空格。另一个问题是,如果任何行名(来自变量name)是:,那么这会在输出中创建类别。还有其他解决方案吗?要么直接从数据中导出,要么可能以某种方式将数据保存在估计中?

标签: formatexportstataspace

解决方案


collapse您可以直接使用 来计算均值和计数,而不是使用estpost tabstat, statistics(mean count) by()。然后您可以使用esttab导出结果。

如果你真的想先创建一个数据集,你仍然可以使用estpost tabstat. 这似乎适用于您的数据集:

estpost tabstat mpg n, by(name) nototal
esttab, cells("mpg n") varlabels(`e(labels)') noobs nonumber nomtitle

如果您想再次在顶部添加“ab: c”,您可以使用 的 order 选项esttab


推荐阅读