我正在编写一个代码,使用tabstat, by()
和esttab
在Latex中导出摘要统计信息表。
这里有一个玩具示例,它复制了我的数据结构:
cls
clear all
set more off
use auto, clear
// Create two groups to be used in the -by()- option
gen rep2="First dataset" if rep78>=3
replace rep2="Second dataset" if rep78<3
// Recode "price" as completely missing in the first group
replace price=. if rep2=="First dataset"
// Table
eststo: estpost tabstat weight price mpg trunk, ///
column(statistics) statistics(count mean median sd) by(rep2) nototal
local sum_statistics "count(label(Observations)) mean(label(Mean) fmt(2)) p50(label(Median)) sd(label(Standard deviation) fmt(2))"
esttab using "table1.tex", replace type ///
title("Summary Statistics") ///
cells("`sum_statistics'") ///
noobs nonum booktabs
输出将摘要统计信息显示在两个子表中,每个子表对应一个数据集(由rep2
定义)。这两个数据集不一定具有相同的变量:第一个数据集中完全缺少price
。
我想完全省略price
的“第一个数据集”的摘要统计行(将其留给“第二个数据集”)。
这是因为“第一个数据集”缺少变量price
,因此其所有摘要统计信息都是缺失值。
如果“Observations”在特定的分组中等于0,则相当于省略整行摘要统计。
我查看了tabstat
的文档,但我不太清楚如何继续。我是否必须使用drop()
的{{1}}选项?
非常感谢,S
答案 0 :(得分:3)
如您所述,您可以使用drop()
选项:
clear all
set more off
sysuse auto, clear
// Create two groups to be used in the -by()- option
gen rep2="First" if rep78>=3
replace rep2="Second" if rep78<3
// Recode "price" as completely missing in the first group
replace price=. if rep2=="First dataset"
// Table
eststo: estpost tabstat weight price mpg trunk, ///
column(statistics) statistics(count mean median sd) by(rep2) nototal
local sum_statistics "count(label(Observations)) mean(label(Mean) fmt(2)) p50(label(Median)) sd(label(Standard deviation) fmt(2))"
esttab, replace type ///
title("Summary Statistics") ///
cells("`sum_statistics'") ///
noobs nonum booktabs drop(First:price)
这涉及使用全名而不仅仅是变量名称。
注意我在分组变量的值中取出了空格。在致电esttab
时,这似乎很麻烦,但我留给你探索。