Hoe kan ik cellen met nultellingen opnemen in proc freq met de optie list? | SAS FAQ

Het is niet ongebruikelijk dat een kruistabel van twee variabelen cellen met nultellingen oplevert. In deze gevallen worden in de uitvoer van proc freq met de optie list combinaties van variabelewaarden weggelaten die een nultelling hebben. In de onderstaande voorbeeldgegevens zijn er bijvoorbeeld geen gevallen waarin geslacht = 2 eneth = 2. De dataset hieronder bevat drie variabelen. Twee variabelen, geslacht en eth, zijn de categorische variabelen die we in kruistabellen willen opnemen. De derde variabele is count, een frequentiegewicht dat het aantal gevallen met dat patroon in de dataset aangeeft, d.w.z. dat er 21 gevallen zijn waarin geslacht=1 en eth=3.

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

Wanneer we proc freq uitvoeren zonder de lijstoptie, bevat de tabel de cel met een nultelling (d.w.z. geslacht=2 en eth=2). Het statement weight specificeert dat de variabele count moet worden gebruikt om het aantal gevallen met elk patroon in de dataset te bepalen.

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

Het uitvoeren van proc freq met de lijstoptie, zoals hieronder weergegeven, levert echter een tabel op zonder regel voor geslacht=2 en eth=2, omdat de telling voor deze combinatie nul is.

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

Het is mogelijk, met een beetje werk, om een tabel te krijgen zoals hierboven, die wel de ontbrekende cel bevat. De eerste stap is om een variabele te maken die constant gelijk is aan één. Dat doen we hieronder met de variabele one.

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

Daarna gebruiken we ods om de uitvoer van het uitvoeren van proc means vast te leggen. De optie summary = t instrueert SAS om de door proc means geproduceerde samenvatting op te slaan in een dataset t. In het commando proc means geeft de optie n aan dat alleen de n (d.w.z. het aantal gevallen) moet worden berekend. De optie completetypes specificeert dat alle combinaties van de klassevariabelen (geslacht en eth) moeten worden opgesomd, inclusief die met nul tellingen in de dataset; anders zouden ze worden weggelaten. De optie freq specificeert dat de variabele count moet worden gebruikt als het aantal gevallen dat een bepaald patroon in de dataset volgt (d.w.z., in dit voorbeeld doet de optie freq in proc means wat weight in proc freq deed). Het var statement geeft de variabele aan waarover statistieken moeten worden berekend; hier wordt de variabele one gebruikt.

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

Dit creëert een dataset t (hieronder afgebeeld) met zes waarnemingen, een voor elke combinatie van eth naar geslacht die beide als variabelen in onze nieuwe dataset voorkomen. De nieuwe dataset bevat ook een variabele genaamd one_N, die het aantal gevallen is dat in elk van de categorieën van geslacht naar eth valt (inclusief een telling van 0 waar nodig).

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

Nu kunnen we proc freq uitvoeren op de nieuwe dataset t. Het gewichtsstatement gebruikt one_N als de variabele die het aantal gevallen met een bepaald patroon van variabelen bevat. Met de optie /zeros krijgt SAS de opdracht in de lijst de gevallen op te nemen waarin one_N = 0. De resulterende lijst bevat een rij voor de combinatie van geslacht en eth met een telling van 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

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *