¿Cómo puedo incluir celdas con recuentos cero en proc freq con la opción de lista? | SAS FAQ

No es raro que una tabulación cruzada de dos variables produzca celdas con recuentos cero. En estos casos, la salida de proc freq con la opción de lista omitirá las combinaciones de valores de las variables que tienen recuentos cero.Por ejemplo, en los datos de muestra de abajo, no hay casos en los que género = 2 yeth = 2. El conjunto de datos siguiente contiene tres variables. Dos variables, género y eth, son las variables categóricas que queremos tabular de forma cruzada. La tercera variable es el recuento, que es un peso de frecuencia, que indica el número de casos con ese patrón en el conjunto de datos, es decir, hay 21 casos en los que el género=1 y la et=3.

data test; input gender eth count;datalines;1 1 121 2 121 3 212 1 22 3 43;run;

Cuando ejecutamos proc freq sin la opción de lista, la tablaincluye la celda con un recuento cero (es decir, género=2 y eth=2). La declaración de peso especifica que la variable recuento debe utilizarse para determinar el número de casos con cada patrón en el conjunto de datos.

proc freq data = test; weight count; table gender*eth;run; The FREQ Procedure Table of gender by ethgender ethFrequencyPercent Row Pct Col Pct 1 2 3 Total 1 12 12 21 45 13.33 13.33 23.33 50.00 26.67 26.67 46.67 85.71 100.00 32.81 2 2 0 43 45 2.22 0.00 47.78 50.00 4.44 0.00 95.56 14.29 0.00 67.19 Total 14 12 64 90 15.56 13.33 71.11 100.00

Ejecutando proc freq con la opción de lista como se muestra a continuación, sin embargo, produce una tabla sin una línea para gender=2 y eth=2, porque el conteo para esta combinación es cero.

proc freq data = test; weight count; table gender*eth /missprint list;run; Cumulative Cumulativegender eth Frequency Percent Frequency Percent 1 1 12 13.33 12 13.33 1 2 12 13.33 24 26.67 1 3 21 23.33 45 50.00 2 1 2 2.22 47 52.22 2 3 43 47.78 90 100.00

Es posible, con un poco de trabajo, obtener una tabla como la de arriba, que contenga la celda que falta. El primer paso es crear una variable que sea una constante igual a uno. Lo hacemos a continuación con la variable llamada uno.

data test; set test; one = 1;run;

A continuación utilizaremos ods para capturar la salida de la ejecución de proc means. La opción summary = t instruye a SAS para que almacene el resumen producido por proc means en un conjunto de datos t. En el comando proc means, la opción n especifica que sólo debe calcularse el n (es decir, el recuento de casos). La opción completetypes especifica que todas las combinaciones de las variables de clase (género y et) deben ser listadas, incluyendo aquellas con conteo cero en el conjunto de datos; de lo contrario, se omitirían. La opción freq especifica que el recuento de la variable debe utilizarse como el número de casos que siguen un patrón determinado en el conjunto de datos (es decir, en este ejemplo, la opción freq hace en proc lo que peso hizo en proc freq). La declaración var indica la variable sobre la que deben calcularse los estadísticos; aquí se utiliza la variable one.

ods output summary = t;proc means data = test n completetypes; class gender eth; freq count; var one;run; The MEANS Procedure Analysis Variable : onegender eth N Obs N 1 1 12 12 2 12 12 3 21 21 2 1 2 2 2 0 0 3 43 43

Esto crea un conjunto de datos t (que se muestra a continuación) con seis observaciones, una para cada combinación de eth por género que aparecen como variables en nuestro nuevo conjunto de datos. El nuevo conjunto de datos también contiene una variable llamada one_N,que es el número de casos que entran en cada una de las categorías de género por eth (incluyendo un recuento de 0 en su caso).

proc print data=t;run;Obs gender eth NObs one_N 1 1 1 12 12 2 1 2 12 12 3 1 3 21 21 4 2 1 2 2 5 2 2 0 0 6 2 3 43 43

Ahora podemos ejecutar proc freq en el nuevo conjunto de datos t. La declaración de peso utiliza one_N como la variable que contiene el recuento de casos con un determinado patrón de variables. La opción /zeros indica a SAS que incluya en la lista los casos en los que one_N = 0. La lista resultante incluye una fila para la combinación de género y eth con un recuento cero.

proc freq data = t; table gender*eth /list; weight one_N /zeros;run; The FREQ Procedure Cumulative Cumulativegender eth Frequency Percent Frequency Percent 1 1 12 13.33 12 13.33 1 2 12 13.33 24 26.67 1 3 21 23.33 45 50.00 2 1 2 2.22 47 52.22 2 2 0 0.00 47 52.22 2 3 43 47.78 90 100.00

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *