在Stata中制表时显示变量的所有级别

时间:2016-05-24 12:29:43

标签: stata

我将两个变量variable1与5个级别交叉制表,将variable2与2个级别交叉制表。制表的结果是变量1的1级和2级没有显示在制表中,因为频率为零,如下所示:

sysuse auto

levelsof rep78
1 2 3 4 5

tab rep78 foreign if foreign, col nofreq

    Repair |
    Record |  Car type
      1978 |   Foreign |     Total
-----------+-----------+----------
         3 |     14.29 |     14.29 
         4 |     42.86 |     42.86 
         5 |     42.86 |     42.86 
-----------+-----------+----------
     Total |    100.00 |    100.00 

我想将所有级别的列表显示如下:

tab rep78 foreign if foreign, col nofreq

    Repair |
    Record |  Car type
      1978 |   Foreign |     Total
-----------+-----------+----------
         1 |      0.00 |     0.00 
         2 |      0.00 |     0.00 
         3 |     14.29 |     14.29 
         4 |     42.86 |     42.86 
         5 |     42.86 |     42.86 
-----------+-----------+----------
     Total |    100.00 |    100.00 

我该怎么做? 我需要这个的原因是我创建了一个程序,该程序将给定变量制表,并使用Stata的putexcel功能将结果发布到Excel报表模板中。在某些情况下,某些级别不会显示在列表中,这会导致某些值被发布到Excel报告的错误行。

1 个答案:

答案 0 :(得分:2)

OP还没有像样的例子,但这里有一些技巧。

总的来说,这很棘手。 Stata不是形而上学家,并且不愿意在没有经验证据的情况下展示它存在的东西。我在这里创建一个包含所有所需交叉组合的数据集,并创建一个带有显式零的变量来显示。对于许多问题,请参阅help fillin

. clear 

. sysuse auto 
(1978 Automobile Data)

. contract foreign rep78, zero 

. egen pc = pc(_freq), by(foreign) 

. tabdisp rep78 foreign if !foreign, c(pc) format(%2.1f)    

--------------------
Repair    |
Record    | Car type
1978      | Domestic
----------+---------
        1 |      3.8
        2 |     15.4
        3 |     51.9
        4 |     17.3
        5 |      3.8
        . |      7.7
--------------------

. tabdisp rep78 foreign if foreign, c(pc) format(%2.1f) 

-------------------
Repair    |
Record    |Car type
1978      | Foreign
----------+--------
        1 |     0.0
        2 |     0.0
        3 |    13.6
        4 |    40.9
        5 |    40.9
        . |     4.5
-------------------

创建表格的命令回显你提供的内容(特别是tabdisp)比创建摘要的命令更有用,然后创建显示摘要的表格(例如tabulatetable )。

相关问题