首页 文章

Stata:包含表格的摘要统计数据 . 按N排序

提问于
浏览
0

如何按频率降序订购下表?

sysuse auto.dta, clear
replace make = substr(make,1, strpos(make," ")-2) 
table make, c(N price mean price median price sd price min price max price) format(%9.2f) center

第一次观察应该是 buicold ,N = 7 . 有没有办法按频率订购?

上面的代码也给出了 too many stats() 的错误 . 是否有允许更多列的替代程序?

1 回答

  • 5

    (接下来,我采用了相当奇怪的方式来聚合 make . word(make, 1) 让我感觉更自然;无论如何你的方法都错过了"Subaru" . )

    table 的文档说明可以指定不超过5个统计数据 . 参见例如http://www.stata.com/help.cgi?table因此这个问题不应该令人惊讶 .

    但是, tabstat 可以显示更多摘要统计信息 . 您可以通过基于频率和 make2 变量创建分类变量来获得所需的排序顺序:两者都必须使用,因为频率上存在联系 . 可以使用用户编写的 labmask 命令(下载位置为 search labmask )为其分配值标签 . 我不知道如何获得不同的计数格式 .

    sysuse auto.dta, clear
    gen make2 = substr(make,1, strpos(make," ")-2) 
    replace make2 = make if missing(make2) 
    bysort make2 : gen freq = -_N 
    egen group = group(freq make2) 
    labmask group, values(make2) 
    tabstat price, s(N mean median sd min max) format(%9.2f) by(group) 
    
     Summary for variables: price
     by categories of: group (group(freq make2))
    
      group |         N      mean       p50        sd       min       max
     -------+------------------------------------------------------------
       Buic |      7.00   6075.29   5189.00   2257.92   4082.00  10372.00
        Old |      7.00   6050.86   4890.00   2486.49   4181.00  10371.00
       Chev |      6.00   4372.33   4229.50    911.30   3299.00   5705.00
       Merc |      6.00   4913.83   4947.50   1239.38   3291.00   6303.00
       Pont |      6.00   4878.83   4828.50    582.49   4172.00   5798.00
       Plym |      5.00   4820.00   4482.00    955.69   4060.00   6486.00
      Datsu |      4.00   6006.50   5654.00   1573.12   4589.00   8129.00
       Dodg |      4.00   5055.50   4948.00   1236.39   3984.00   6342.00
          V |      4.00   6021.00   6123.50   1166.44   4697.00   7140.00
         AM |      3.00   4215.67   4099.00    485.63   3799.00   4749.00
        Cad |      3.00  13930.33  14500.00   2313.71  11385.00  15906.00
       Linc |      3.00  12852.33  13466.00   1175.50  11497.00  13594.00
      Toyot |      3.00   5122.00   5719.00   1193.32   3748.00   5899.00
        Aud |      2.00   7992.50   7992.50   2400.63   6295.00   9690.00
        For |      2.00   4288.00   4288.00    142.84   4187.00   4389.00
       Hond |      2.00   5149.00   5149.00    919.24   4499.00   5799.00
         BM |      1.00   9735.00   9735.00         .   9735.00   9735.00
        Fia |      1.00   4296.00   4296.00         .   4296.00   4296.00
       Mazd |      1.00   3995.00   3995.00         .   3995.00   3995.00
     Peugeo |      1.00  12990.00  12990.00         .  12990.00  12990.00
     Renaul |      1.00   3895.00   3895.00         .   3895.00   3895.00
     Subaru |      1.00   3798.00   3798.00         .   3798.00   3798.00
       Volv |      1.00  11995.00  11995.00         .  11995.00  11995.00
     -------+------------------------------------------------------------
      Total |     74.00   6165.26   5006.50   2949.50   3291.00  15906.00
     --------------------------------------------------------------------
    

    在某些方面,更直接的解决方案只是 collapse 数据,然后分配适当的排序顺序和格式 .

    sysuse auto.dta, clear
     gen make2 = substr(make,1, strpos(make," ")-2) 
     replace make2 = make if missing(make2) 
     collapse (count)n=price (mean)mean=price (p50)median=price (sd)sd=price (min)min=price (max)max=price, by(make2)  
     gsort -n 
     format mean-max %9.2f 
     format n %9.0f 
     list make2 n mean median sd min max, sep(0) noobs 
    
     +------------------------------------------------------------------+
     |  make2   n       mean     median        sd        min        max |
     |------------------------------------------------------------------|
     |   Buic   7    6075.29    5189.00   2257.92    4082.00   10372.00 |
     |    Old   7    6050.86    4890.00   2486.49    4181.00   10371.00 |
     |   Chev   6    4372.33    4229.50    911.30    3299.00    5705.00 |
     |   Pont   6    4878.83    4828.50    582.49    4172.00    5798.00 |
     |   Merc   6    4913.83    4947.50   1239.38    3291.00    6303.00 |
     |   Plym   5    4820.00    4482.00    955.69    4060.00    6486.00 |
     |      V   4    6021.00    6123.50   1166.44    4697.00    7140.00 |
     |  Datsu   4    6006.50    5654.00   1573.12    4589.00    8129.00 |
     |   Dodg   4    5055.50    4948.00   1236.39    3984.00    6342.00 |
     |    Cad   3   13930.33   14500.00   2313.71   11385.00   15906.00 |
     |  Toyot   3    5122.00    5719.00   1193.32    3748.00    5899.00 |
     |   Linc   3   12852.33   13466.00   1175.50   11497.00   13594.00 |
     |     AM   3    4215.67    4099.00    485.63    3799.00    4749.00 |
     |    Aud   2    7992.50    7992.50   2400.63    6295.00    9690.00 |
     |    For   2    4288.00    4288.00    142.84    4187.00    4389.00 |
     |   Hond   2    5149.00    5149.00    919.24    4499.00    5799.00 |
     |   Volv   1   11995.00   11995.00         .   11995.00   11995.00 |
     |    Fia   1    4296.00    4296.00         .    4296.00    4296.00 |
     |   Mazd   1    3995.00    3995.00         .    3995.00    3995.00 |
     | Peugeo   1   12990.00   12990.00         .   12990.00   12990.00 |
     | Subaru   1    3798.00    3798.00         .    3798.00    3798.00 |
     | Renaul   1    3895.00    3895.00         .    3895.00    3895.00 |
     |     BM   1    9735.00    9735.00         .    9735.00    9735.00 |
     +------------------------------------------------------------------+
    

相关问题