作者:王美庭
Email: wangmeiting92@gmail.com
- 一、引言
- 二、命令的安装
- 三、语法与选项
- 四、实例
- 五、输出效果展示
在处理数据时,需要将table
命令的结果导出,但始终无法找到对应的选项,于是便自己动手写了这个命令。不过这个命令是基于tabstat
和esttab
编写的,所以与原生的命令有些许不同,不过大同小异。
本文介绍的table2
命令,可以将分区描述性统计结果输出至 Stata 界面、Word 的 .rtf 文件和 LaTeX 的.tex 文件。有人可能会说,不是已经有了wmtsum
了吗?不是的,wmtsum
不能处理分区的情况。
该命令,和已经推出的wmtsum
、wmttest
、wmtcorr
、wmtreg
、wmtmat
命令,都可以通过append
选项成为一个整体,将输出结果集中输出至一个 Word 或 LaTeX 文件中。
更多阅读:
- Stata 新命令:wmtsum——描述性统计表格的输出
- Stata 新命令:wmttest——分组 T 均值检验表格的输出
- Stata 新命令:wmtcorr——相关系数矩阵的输出
- Stata 新命令:wmtreg——回归结果的输出
- Stata 新命令:wmtmat——矩阵的输出
table2
命令以及本人其他命令的代码都托管于 GitHub 上,读者可随时下载安装这些命令。
table2
由于用到了自己编写的wmtstr
、space_rm
、mat_cagn
程序,所以有以下可选安装方式。
(1)如果你没有wmtstr
、space_rm
、mat_cagn
程序,则你需要使用github
外部命令进行安装(github
命令本身可以通过net install github, from("https://haghish.github.io/github/")
进行安装):
github install Meiting-Wang/table2
以上语句会自动额外帮助你安装最新版的
wmtstr
、space_rm
、mat_cagn
程序。
(2)如果你已经有了wmtstr
、space_rm
、mat_cagn
程序,则你可以通过系统自带的net
命令进行安装以节约安装时间:
net install table2, from("https://raw.githubusercontent.com/Meiting-Wang/table2/master")
命令语法:
table2 varlist [if] [in] [weight] [using filename] [, options]
varlist
: 可输入一个或两个类别变量weight
: 可以选择 fweight 或 aweight,默认为空。using
: 可以将结果输出至 Word( .rtf 文件)和 LaTeX( .tex 文件)
选项(options):
- 一般选项
contents(string)
:填写类似n mean(price) sd(price) mean(mpg)
的语句,括号内为变量,括号外为统计量。所有可以输入的统计量有:n mean sd min max range variance sum p1 p5 p10 p25 p50 p75 p90 p95 p99 cv skewness kurtosis
。这些统计量的含义可以在help tabstat
中查看。format(fmtlist)
:设定contents
中对应统计量的数值格式row
:额外报告行总计column
:额外报告列总计listwise
:在计算统计量之前会先剔除所涉及变量中包含缺漏值的观测值title(string)
:设置表格标题replace
: 替换已存在的文件append
: 将输出内容附加在已存在的文件中eqlabels(strings)
: 自定义行方程名varlabels(matchlist)
: 自定义行变量名collabels(strings)
: 自定义列名varwidth(number)
: 自定义表格第一列的宽度modelwidth(numlist)
: 自定义表格第二列及之后列的宽度compress
: 压缩表格的行空白空间,以使表格更紧凑
- LaTeX 专有选项
alignment(string)
:设置 LaTeX 表格的列对齐格式,可输入math
或dot
,math
设置列格式为居中对齐的数学格式(自动添加宏包booktabs
和array
),dot
表示小数点对齐的数学格式(自动添加宏包booktabs
、array
和dcolumn
)。默认为math
page(string)
:可添加用户额外需要的宏包width(string)
:设置 LaTeX 中表格的宽度,如width(\textwidth)
表示设置表格宽度为版心宽度
- 以上其中的一些选项可以缩写,详情可以在安装完命令后
help table2
*共同部分
sysuse auto.dta, clear
table2 foreign, c(n) //分组计数
table2 foreign, c(n mean(price) sd(price) mean(trunk) sd(trunk)) //分组计算统计量
table2 foreign, c(n mean(price) sd(price) mean(trunk) sd(trunk)) row //额外报告行方向总体上计算的统计量
table2 foreign, c(n mean(price) sd(price) mean(trunk) sd(trunk)) row list //计算统计量时不会考虑包含缺漏值的观测值
table2 foreign rep78, c(n) //分组计数
table2 foreign rep78, c(n mean(price) sd(price) mean(trunk) sd(trunk)) //分组计算统计量
table2 foreign rep78, c(n mean(price) sd(price) mean(trunk) sd(trunk)) row //额外报告行方向总体上计算的统计量
table2 foreign rep78, c(n mean(price) sd(price) mean(trunk) sd(trunk)) row col //额外报告列方向总体上计算的统计量
table2 foreign rep78, c(n mean(price) sd(price) mean(trunk) sd(trunk)) row col list //计算统计量时不会考虑包含缺漏值的观测值
table2 foreign rep78 , c(n mean(price) sd(price) mean(trunk) sd(trunk)) f(0 2 2 2 2) row col //设置数值格式
table2 foreign rep78 , c(n mean(price) sd(price) mean(trunk) sd(trunk)) row col eql(domestic foreign Total) //自定义报告的行方程名
table2 foreign rep78 , c(n mean(price) sd(price) mean(trunk) sd(trunk)) row col varl(mean(price) price_m sd(price) price_sd mean(trunk) trunk_m sd(trunk) trunk_sd) //自定义行名
table2 foreign rep78 , c(n mean(price) sd(price) mean(trunk) sd(trunk)) row col coll("very bad" bad general good "very good" Total) //自定义列名
table2 foreign rep78 , c(n mean(price) sd(price) mean(trunk) sd(trunk)) row col compress //将表格压缩展示
table2 foreign rep78 , c(n mean(price) sd(price) mean(trunk) sd(trunk)) row col varw(11) //自定义第一列的宽度(空格数)
table2 foreign rep78 , c(n mean(price) sd(price) mean(trunk) sd(trunk)) row col compress varw(12) modelw(10) //将第二列及之后列的宽度设定为10个空格
table2 foreign rep78 , c(n mean(price) sd(price) mean(trunk) sd(trunk)) row col compress varw(12) modelw(10 15 20 20 20 20) //为第二列及之后列分别自定义宽度
table2 foreign rep78 , c(n mean(price) sd(price) mean(trunk) sd(trunk)) row col ti(This is a title) //自定义表格标题
*Word部分
table2 foreign rep78 using Myfile.rtf, replace c(n mean(price) sd(price) mean(trunk) sd(trunk)) f(0 2 2 2 2) row col ti(This is a title) //将结果输出至Word
*LaTeX部分
table2 foreign rep78 using Myfile.tex, replace c(n mean(price) sd(price) mean(trunk) sd(trunk)) f(0 2 2 2 2) row col ti(This is a title) //将结果输出至LaTeX
table2 foreign rep78 using Myfile.tex, replace c(n mean(price) sd(price) mean(trunk) sd(trunk)) f(0 2 2 2 2) row col ti(This is a title) a(math) //设置列格式为数学格式(也为默认列格式)
table2 foreign rep78 using Myfile.tex, replace c(n mean(price) sd(price) mean(trunk) sd(trunk)) f(0 2 2 2 2) row col ti(This is a title) a(dot) //设置列格式为小数点对齐
table2 foreign rep78 using Myfile.tex, replace c(n mean(price) sd(price) mean(trunk) sd(trunk)) f(0 2 2 2 2) row col ti(This is a title) page(amsmath) //引入额外的宏包(无论怎么样都会引入array和booktabs宏包)
table2 foreign rep78 using Myfile.tex, replace c(n mean(price) sd(price) mean(trunk) sd(trunk)) f(0 2 2 2 2) row col ti(This is a title) width(\textwidth) //设置表格宽度为版心宽度
*该命令结果可以用系统自带的 table 命令进行验证
table foreign, c(freq)
table foreign, c(freq mean price sd price mean trunk sd trunk)
table foreign, c(freq mean price sd price mean trunk sd trunk) row
table foreign rep78, c(freq)
table foreign rep78, c(freq mean price sd price mean trunk sd trunk)
table foreign rep78, c(freq mean price sd price mean trunk sd trunk) row
table foreign rep78, c(freq mean price sd price mean trunk sd trunk) row col
- Stata
table2 foreign, c(n mean(price) sd(price) mean(trunk) sd(trunk)) row
-----------------------------------------------------------------------------
n mean(price) sd(price) mean(trunk) sd(trunk)
-----------------------------------------------------------------------------
0 52 6072.423 3097.104 14.75 4.306288
1 22 6384.682 2621.915 11.40909 3.216906
Total 74 6165.257 2949.496 13.75676 4.277404
-----------------------------------------------------------------------------
table2 foreign rep78, c(n mean(price) sd(price) mean(trunk) sd(trunk)) row col
------------------------------------------------------------------------------------------
1 2 3 4 5 Total
------------------------------------------------------------------------------------------
0
n 2 8 27 9 2 48
mean(price) 4564.5 5967.625 6607.074 5881.556 4204.5 6179.25
sd(price) 522.5519 3579.357 3661.267 1592.019 311.8341 3188.969
mean(trunk) 8.5 14.625 15.59259 16.66667 9.5 15.08333
sd(trunk) 2.12132 4.983903 3.532914 4.66369 2.12132 4.281744
------------------------------------------------------------------------------------------
1
n 0 0 3 9 9 21
mean(price) . . 4828.667 6261.444 6292.667 6070.143
sd(price) . . 1285.613 1896.092 2765.629 2220.984
mean(trunk) . . 12.33333 10.33333 11.88889 11.28571
sd(trunk) . . 3.21455 3.840573 2.666667 3.242574
------------------------------------------------------------------------------------------
Total
n 2 8 30 18 11 69
mean(price) 4564.5 5967.625 6429.233 6071.5 5913 6146.043
sd(price) 522.5519 3579.357 3525.14 1709.608 2615.763 2912.44
mean(trunk) 8.5 14.625 15.26667 13.5 11.45455 13.92754
sd(trunk) 2.12132 4.983903 3.590537 5.272013 2.65946 4.343077
------------------------------------------------------------------------------------------
- Word
table2 foreign rep78 using Myfile.rtf, replace c(n mean(price) sd(price) mean(trunk) sd(trunk)) f(0 2 2 2 2) row col ti(This is a title)
- LaTeX
table2 foreign rep78 using Myfile.tex, replace c(n mean(price) sd(price) mean(trunk) sd(trunk)) f(0 2 2 2 2) row col ti(This is a title) a(math)
% 16 Aug 2020 22:17:09
\documentclass{article}
\usepackage{array}
\usepackage{booktabs}
\begin{document}
\begin{table}[htbp]\centering
\caption{This is a title}
\begin{tabular}{l*{6}{>{$}c<{$}}}
\toprule
&\multicolumn{1}{c}{1}&\multicolumn{1}{c}{2}&\multicolumn{1}{c}{3}&\multicolumn{1}{c}{4}&\multicolumn{1}{c}{5}&\multicolumn{1}{c}{Total}\\
\midrule
0 & & & & & & \\
n & 2& 8& 27& 9& 2& 48\\
mean(price) & 4564.50& 5967.63& 6607.07& 5881.56& 4204.50& 6179.25\\
sd(price) & 522.55& 3579.36& 3661.27& 1592.02& 311.83& 3188.97\\
mean(trunk) & 8.50& 14.63& 15.59& 16.67& 9.50& 15.08\\
sd(trunk) & 2.12& 4.98& 3.53& 4.66& 2.12& 4.28\\
\midrule
1 & & & & & & \\
n & 0& 0& 3& 9& 9& 21\\
mean(price) & .& .& 4828.67& 6261.44& 6292.67& 6070.14\\
sd(price) & .& .& 1285.61& 1896.09& 2765.63& 2220.98\\
mean(trunk) & .& .& 12.33& 10.33& 11.89& 11.29\\
sd(trunk) & .& .& 3.21& 3.84& 2.67& 3.24\\
\midrule
Total & & & & & & \\
n & 2& 8& 30& 18& 11& 69\\
mean(price) & 4564.50& 5967.63& 6429.23& 6071.50& 5913.00& 6146.04\\
sd(price) & 522.55& 3579.36& 3525.14& 1709.61& 2615.76& 2912.44\\
mean(trunk) & 8.50& 14.63& 15.27& 13.50& 11.45& 13.93\\
sd(trunk) & 2.12& 4.98& 3.59& 5.27& 2.66& 4.34\\
\bottomrule
\end{tabular}
\end{table}
\end{document}
在将结果输出至 Word 或 LaTeX 时,Stata 界面上也会呈现对应的结果,以方便查看。