Stata 如何导出双向表?
我在Stata中创建了一个双向汇总表,但我很难输出结果 以Stata 如何导出双向表?,stata,Stata,我在Stata中创建了一个双向汇总表,但我很难输出结果 以auto.dta样本数据集为例,我试图通过两个其他变量(昂贵的和外来的)构建一个显示mpg平均值和标准差的表 我的代码目前如下所示: sysuse auto.dta, replace gen expensive = (price > 5000) 我想显示的表格可以通过以下两个命令之一创建: tabulate expensive foreign, sum(mpg) Means, Standard Deviations
auto.dta
样本数据集为例,我试图通过两个其他变量(昂贵的
和外来的
)构建一个显示mpg
平均值和标准差的表
我的代码目前如下所示:
sysuse auto.dta, replace
gen expensive = (price > 5000)
我想显示的表格可以通过以下两个命令之一创建:
tabulate expensive foreign, sum(mpg)
Means, Standard Deviations and Frequencies of Mileage (mpg)
| Car type
expensive | Domestic Foreign | Total
-----------+----------------------+----------
0 | 22.137931 28.875 | 23.594595
| 4.3648281 4.8825491 | 5.2305696
| 29 8 | 37
-----------+----------------------+----------
1 | 16.913043 22.428571 | 19
| 3.4629604 6.4416229 | 5.4467115
| 23 14 | 37
-----------+----------------------+----------
Total | 19.826923 24.772727 | 21.297297
| 4.7432972 6.6111869 | 5.7855032
| 52 22 | 74
我还可以使用collapse
近似地计算相同的结果,但这不会计算行和列的总数
我的问题是,无论是制表
(使用sum
选项)命令还是制表
命令似乎都不便于输出。我曾尝试转换为矩阵,但使用sum
选项的tablate
不允许使用matcell
选项,而table
似乎同样不合作
我熟悉
tabstat
,esttab
等,但无法创建任何这些包所需的双向表。任何帮助都将不胜感激。一个简单的解决方案是使用折叠
获取一个数据集,该数据集可以复制所需的表,然后将该数据集导出为csv
范例
按(昂贵的国外)计算的每加仑压缩量(总和)
然后
使用mydata.csv导出分隔符
社区贡献的命令asdoc
正是这样做的:
. asdoc table expensive foreign, c(mean mpg sd mpg count mpg) row col
----------------------------------------
| Car type
expensive | Domestic Foreign Total
----------+-----------------------------
0 | 22.1379 28.875 23.5946
| 4.364828 4.882549 5.23057
| 29 8 37
|
1 | 16.913 22.4286 19
| 3.46296 6.441623 5.446712
| 23 14 37
|
Total | 19.8269 24.7727 21.2973
| 4.743297 6.611187 5.785503
| 52 22 74
----------------------------------------
Click to Open File: Myfile.doc
或者,可以使用社区贡献的命令tabout
:
. tabout expensive foreign using table1.txt, c(mean mpg) sum replace
Table output written to: table1.txt
Car type
Domestic Foreign Total
Mean mpg Mean mpg Mean mpg
expensive
0 22.1 28.9 23.6
1 16.9 22.4 19.0
Total 19.8 24.8 21.3
谢谢你的建议,Noobie。不幸的是,
collapse
没有提供我想要的行/列总数。例如,当昂贵=0且外来=0,当昂贵=0且外来=1…等时,折叠将显示平均mpg。它将填充4个单元格中的每个单元格;当昂贵=0时,它不会提供总体mpg。我给出的两个示例都使用了制表
和制表
,给出了我想要的行和列总数,但不容易输出。。。如果您能告诉我一种使用collapse
获取行和列总计的方法,那将是非常棒的。将总计与数据集一起存储为额外观测值的想法与Stata不同,但您可以使用egen
的total()
函数添加额外变量。您好,尼克。我感谢你的建议。egen-total
函数将允许我按组求和,我还可以使用egen-mean
计算折叠数据集的平均加权值。这两个都不是我想要实现的。我想要所有观测值的平均mpg,其中昂贵=0(单独来说,昂贵=1)。将选项卡的输出、总和(mpg)
与折叠的数据集进行比较。我有点怀疑,collapse
是否会起作用。有没有一种方法可以简单地输出该制表
命令生成的表格?您可以使用egen
的mean()
和by(昂贵)
来计算这些平均值。Stata自然不支持我认为您寻求的那种数据结构;它真的没有兴趣尝试成为一个电子表格程序。表中的任何边缘信息都不能以任何形式轻松添加到数据集中,只能作为额外变量。靠剑活着的人,也会死于剑下。如果您对使用Excel文件进行输出感兴趣,为什么不在Excel中计算额外的信息呢?(很抱歉,我真的没有建议你怎么做。)请注意,这个答案中指定的折叠
不会产生任何与OP要求的内容(即制表
和表格
产生的内容)非常接近的内容。
. tabout expensive foreign using table1.txt, c(mean mpg) sum replace
Table output written to: table1.txt
Car type
Domestic Foreign Total
Mean mpg Mean mpg Mean mpg
expensive
0 22.1 28.9 23.6
1 16.9 22.4 19.0
Total 19.8 24.8 21.3
. tabout expensive foreign using table2.txt, c(sd mpg) sum replace
Table output written to: table2.txt
Car type
Domestic Foreign Total
Sd mpg Sd mpg Sd mpg
expensive
0 4.4 4.9 5.2
1 3.5 6.4 5.4
Total 4.7 6.6 5.8
. tabout expensive foreign using table3.txt, c(count mpg) sum replace
Table output written to: table3.txt
Car type
Domestic Foreign Total
Count mpg Count mpg Count mpg
expensive
0 29.0 8.0 37.0
1 23.0 14.0 37.0
Total 52.0 22.0 74.0