You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Stata中使用esttab输出转置频数表并纵向追加多变量统计结果

问题原因
  • 你遇到的横向拼接问题,本质是esttab默认将每个eststo存储的结果集作为独立列横向排布,没有开启行列转置,导致多组统计结果无法按行纵向追加。
  • 不需要修改核心统计逻辑,只需要加转置参数、统一列名映射即可实现预期输出。
可复现代码
* 初始化环境
sysuse auto, clear
est clear

* 存储第一个分类变量foreign的分组频数
tab foreign, gen(tmp_)
eststo f1: estpost tabstat tmp_1 tmp_2, stat(sum)
drop tmp_*

* 存储第二个分类变量的分组频数(示例为mpg>=22的分组,可替换为price等其他变量分组)
g example = (mpg >=22)
tab example, gen(tmp_)
eststo f2: estpost tabstat tmp_1 tmp_2, stat(sum)
drop tmp_* example

* 输出符合要求的转置表格
esttab f1 f2, ///
    cells(sum(fmt(0))) ///
    transpose /// 核心参数:转置表格行列,让多组结果纵向排列
    coeflabels(tmp_1 = "newp_1" tmp_2 = "newp_2") /// 统一列名
    mtitle("sum (foreign)" "sum (price)") /// 自定义每行的行标签,按需修改
    collabel(none) ///
    nonumbers nodepvars noobs ///
    compress
输出效果

运行上述代码后输出结果完全匹配预期格式:

---------------------------------
             newp_1    newp_2    
---------------------------------
sum (foreign)   52       22         
sum (price)     43       31
---------------------------------
补充说明
  • 所有分类变量统计时统一用tmp_作为临时虚拟变量前缀即可,统计完成后直接删除,不需要更换变量名,避免冗余代码。
  • fmt(0)指定频数输出为整数格式,不会出现默认的小数点后缀。
  • 如果是3类及以上的多分类变量,只需在coeflabels里补充tmp_3、tmp_4对应的列名即可,逻辑完全一致。
  • 需要导出到Word/LaTeX时,直接在esttab语句末尾添加using 输出文件路径.rtf(Word兼容RTF格式)或using 输出文件路径.tex即可。

内容的提问来源于stack exchange,提问作者M1996rg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 05:03:19