Comment puis-je inclure des cellules avec des comptes nuls dans proc freq avec l’option liste ? | SAS FAQ

Il n’est pas rare qu’un tableau croisé de deux variables produise des cellules avec des comptes nuls. Dans ces cas, la sortie de proc freq avec l’option list omettra les combinaisons de valeurs de variables qui ont des comptes nuls.Par exemple, dans l’échantillon de données ci-dessous, il n’y a pas de cas où gender = 2 eteth = 2. L’ensemble de données ci-dessous contient trois variables. Deux variables, le sexe et l’âge, sont les variables catégorielles que nous voulons croiser. La troisième variable est count, qui est un poids de fréquence, indiquant le nombre de cas avec ce modèle dans l’ensemble de données, c’est-à-dire qu’il y a 21 cas où gender=1 et eth=3.

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

Lorsque nous exécutons proc freq sans l’option list, le tableauinclut la cellule avec un compte nul (c’est-à-dire gender=2 et eth=2). L’instruction weight spécifie que la variable count doit être utilisée pour déterminer le nombre de cas avec chaque motif dans l’ensemble de données.

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

L’exécution de proc freq avec l’option list, comme indiqué ci-dessous, produit toutefois un tableau sans ligne pour gender=2 et eth=2, car le compte pour cette combinaison est nul.

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

Il est possible, avec un peu de travail, d’obtenir un tableau tel que celui ci-dessus, qui contient la cellule manquante. La première étape consiste à créer une variable qui est une constante égale à un. C’est ce que nous faisons ci-dessous avec la variable appelée one.

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

Après cela, nous allons utiliser ods pour capturer la sortie de l’exécution de proc means. L’option summary = t indique à SAS de stocker le résumé produit par proc means dans un ensemble de données t. Dans la commande proc means, l’option n spécifie que seul le n (c’est-à-dire le nombre de cas) doit être calculé. L’option completetypes spécifie que toutes les combinaisons des variables de classe (sexe et eth) doivent être listées, y compris celles dont le nombre est nul dans l’ensemble de données ; sinon, elles seraient omises. L’option freq spécifie que la variable count doit être utilisée comme le nombre de cas qui suivent un modèle donné dans l’ensemble de données (c’est-à-dire que dans cet exemple, l’option freq fait dans proc means ce que weight faisait dans proc freq). L’instruction var indique la variable sur laquelle les statistiques doivent être calculées ; c’est ici que la variable one est utilisée.

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

Ceci crée un ensemble de données t (illustré ci-dessous) avec six observations, une pour chaque combinaison d’eth par sexe, les deux apparaissant comme variables dans notre nouvel ensemble de données. Le nouvel ensemble de données contient également une variable appelée one_N,qui est le nombre de cas qui entrent dans chacune des catégories de sexe par eth (y compris un compte de 0 le cas échéant).

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

Maintenant, nous pouvons exécuter proc freq sur le nouvel ensemble de données t. L’instruction weight utilise one_N comme variable contenant le compte des cas avec un motif de variables donné. L’option /zeros indique à SAS d’inclure dans la liste les cas dans lesquels one_N = 0. La liste résultante comprend une ligne pour la combinaison du sexe et de l’eth avec un compte nul.

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

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *