Veröffentlicht am :
Makro CREATION_INTERNE

Häufigkeitsanalyse mehrerer Tabellen mit einem Makro

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Das Skript beginnt mit der Erstellung von zwei separaten Datensätzen, 'males' und 'females', unter Verwendung von DATA-Schritten mit Inline-Daten (datalines). Anschließend wird die PROC FREQ-Prozedur für jede Tabelle ausgeführt, um die Häufigkeit der Altersgruppen nach Geschlecht zu berechnen. Der Hauptteil des Codes ist die Definition eines Makros '%multfreq'. Dieses Makro wurde entwickelt, um die Ausführung von PROC FREQ für eine Liste von Datensätzen und für eine Liste von angegebenen Variablen zu automatisieren, was eine große Flexibilität für wiederholte Analysen bietet. Schließlich wird das Makro aufgerufen, um die beiden zuvor erstellten Tabellen zu verarbeiten.
Datenanalyse

Type : CREATION_INTERNE


Die Daten für die Tabellen 'males' und 'females' werden direkt im Skript mit 'datalines'-Anweisungen innerhalb von zwei separaten DATA-Schritten erstellt. Es sind keine externen Datenquellen erforderlich.

1 Codeblock
DATA STEP Data
Erklärung :
Dieser Block erstellt die Tabelle 'males' aus internen Daten, die über 'datalines' bereitgestellt werden. Die Daten enthalten Informationen über männliche Personen.
Kopiert!
1DATA males;
2INFILE DATALINES dlm='|' dsd missover;
3INPUT NAME : $8. SEX : $1. AGE : best32. HEIGHT : best32. WEIGHT : best32.;
4label ;
5FORMAT ;
6datalines4;
7Alfred|M|14|69|112.5
8Henry|M|14|63.5|102.5
9James|M|12|57.3|83
10Jeffrey|M|13|62.5|84
11John|M|12|59|99.5
12Philip|M|16|72|150
13Robert|M|12|64.8|128
14Ronald|M|15|67|133
15Thomas|M|11|57.5|85
16William|M|15|66.5|112
17;;;;
18RUN;
2 Codeblock
DATA STEP Data
Erklärung :
Dieser Block erstellt die Tabelle 'females' aus internen Daten, die über 'datalines' bereitgestellt werden. Die Daten enthalten Informationen über weibliche Personen.
Kopiert!
1DATA females;
2INFILE DATALINES dlm='|' dsd missover;
3INPUT NAME : $8. SEX : $1. AGE : best32. HEIGHT : best32. WEIGHT : best32.;
4label ;
5FORMAT ;
6datalines4;
7Alice|F|13|56.5|84
8Barbara|F|13|65.3|98
9Carol|F|14|62.8|102.5
10Jane|F|12|59.8|84.5
11Janet|F|15|62.5|112.5
12Joyce|F|11|51.3|50.5
13Judy|F|14|64.3|90
14Louise|F|12|56.3|77
15Mary|F|15|66.5|112
16;;;;
17RUN;
3 Codeblock
PROC FREQ
Erklärung :
Diese beiden Prozeduren führen eine Häufigkeitsanalyse für die Tabellen 'males' und 'females' durch. Sie berechnen die Kreuztabelle der Variablen 'sex' und 'age' und speichern die Ergebnisse in den Tabellen 'u01' und 'u02'.
Kopiert!
1PROC FREQ DATA=males ;
2 tables sex*age /list missing out=u01;
3 where 1=1;
4RUN;
5
6PROC FREQ DATA=females ;
7 tables sex*age /list missing out=u02;
8 where 1=1;
9RUN;
4 Codeblock
MACRO
Erklärung :
Definition des Makros '%multfreq'. Es nimmt als Parameter eine Liste von Datensätzen ('dsnlist'), eine Liste von zu generierenden Häufigkeitstabellen ('tables') und eine 'where'-Bedingung entgegen. Das Makro durchläuft jeden Datensatz und führt PROC FREQ für jede angeforderte Häufigkeitstabelle aus, wobei ein Ausgabedatensatz für jede erstellt wird.
Kopiert!
1%macro multfreq(dsnlist=%str( ),tables=%str( ),where=%str());
2
3%local _dsncount _dsni _tablesi _tablescount _currentdsn _currentable;
4
5%let _dsncount=%sysfunc(countw(&dsnlist,%str( )));
6%let _tablescount=%sysfunc(countw(&tables,%str( )));
7
8%DO _dsni=1 %to &_dsncount.;
9 %let _currentdsn=%scan(&dsnlist.,&_dsni,%str( ));
10 title "&_currentdsn";
11
12 PROC FREQ DATA= &_currentdsn ;
13 %DO _tablesi=1 %to &_tablescount.;
14 %let _currenttable=%scan(&tables.,&_tablesi,%str( ));
15 tables &_currenttable. /list missing out=%scan(&_currentdsn.,-1,%str(.))_freq0&_tablesi.;
16 %END;
17 &where.;
18 RUN;
19
20%END;
21%mend multfreq;
5 Codeblock
MACRO
Erklärung :
Aufruf des Makros '%multfreq' zur Durchführung der Häufigkeitsanalyse für die Tabellen 'males' und 'females'. Die angeforderte Häufigkeitstabelle ist die Kreuztabelle von 'sex' und 'age'.
Kopiert!
1%multfreq(
2dsnlist=%str(males females)
3,tables=%str(sex*age)
4,where=%str()
5);
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.