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
相关产品推荐
相关产品推荐

