Quiero exportar varias tablas de Stata a Excel, pero solo me interesan las tablas donde cada celda tiene más de 5 observaciones. ¿Hay alguna forma de establecer una condición para hacer exactamente eso?

Con el comando contribuido por la comunidad tabout intenté hacer algo en las siguientes líneas:

tabout var1 if n(cell) > 5

Para las celdas con menos de 5 observaciones, también me gustaría que la tabla exportada muestre otro valor (como . o *) en lugar de 0.

0
Frederik 11 dic. 2019 a las 12:32

2 respuestas

La mejor respuesta

Puede exportar dicha tabla con el comando contribuido por la comunidad esttab:

sysuse auto, clear

bysort foreign rep78 : generate freq = _N
quietly tabulate foreign rep78 if freq >= 5, matcell(A)

forvalues i = 1 / 2 {
    forvalues j = 1 / 4 {
        if A[`i', `j'] == 0 matrix A[`i', `j'] = .
    }
}

esttab matrix(A)

----------------------------------------------------------------
                        A                                       
                       c1           c2           c3           c4
----------------------------------------------------------------
r1                      8           27            9            .
r2                      .            .            9            9
----------------------------------------------------------------
2
Pearly Spencer 11 dic. 2019 a las 13:28

Un enfoque general consiste en dos pases, uno para calcular la frecuencia de la celda en una nueva variable y el otro para tabular condicional a esa variable.

. sysuse auto
(1978 Automobile Data)

. tab foreign rep78

           |                   Repair Record 1978
  Car type |         1          2          3          4          5 |     Total
-----------+-------------------------------------------------------+----------
  Domestic |         2          8         27          9          2 |        48 
   Foreign |         0          0          3          9          9 |        21 
-----------+-------------------------------------------------------+----------
     Total |         2          8         30         18         11 |        69 

. table foreign rep78

----------------------------------------
          |      Repair Record 1978     
 Car type |    1     2     3     4     5
----------+-----------------------------
 Domestic |    2     8    27     9     2
  Foreign |                3     9     9
----------------------------------------

. bysort foreign rep78 : generate freq = _N

. table foreign rep78 if freq >= 5

----------------------------------
          |   Repair Record 1978  
 Car type |    2     3     4     5
----------+-----------------------
 Domestic |    8    27     9      
  Foreign |                9     9
----------------------------------

Un código más general admitiría las condiciones if y in.

1
Nick Cox 11 dic. 2019 a las 10:41