Stata 如何导出双向表?

Stata 如何导出双向表?,stata,Stata,我在Stata中创建了一个双向汇总表,但我很难输出结果 以auto.dta样本数据集为例,我试图通过两个其他变量(昂贵的和外来的)构建一个显示mpg平均值和标准差的表 我的代码目前如下所示: sysuse auto.dta, replace gen expensive = (price > 5000) 我想显示的表格可以通过以下两个命令之一创建: tabulate expensive foreign, sum(mpg) Means, Standard Deviations

我在Stata中创建了一个双向汇总表,但我很难输出结果

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