Veröffentlicht am :
ETL CREATION_INTERNE

Iteratives Umcodieren und SAS-Arrays

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Dieses Skript vergleicht zwei Ansätze zur Bereinigung von Daten, bei denen der Wert '9' einen fehlenden Wert darstellt. Zuerst wird ein Testdatensatz erstellt. Anschließend wird ein manueller und repetitiver Ansatz mit mehreren bedingten Anweisungen gezeigt, gefolgt von einem professionellen und prägnanten Ansatz, der ein SAS©-Array und eine DO-Schleife verwendet, um alle numerischen Variablen dynamisch zu verarbeiten.
Datenanalyse

Type : CREATION_INTERNE


Die Daten werden direkt im Skript über die DATALINES-Anweisung generiert.

1 Codeblock
DATA STEP Data
Erklärung :
Erstellung der Tabelle 'health_study' mit im Code enthaltenen Rohdaten.
Kopiert!
1DATA health_study;
2 INPUT id expc listen good take hlprob share livaln livchld slpsick nerves exclude count tellfl
3supress nocare satlife vigact liftgroc stairs bend;
4DATALINES;
510001 9 0 1 1 1 0 0 9 0 0 0 1 1 1 0 1 1 9 1 9
610003 1 1 0 0 0 0 1 0 1 0 1 0 1 1 1 0 0 0 9 1
710004 0 0 1 0 0 1 1 0 9 1 0 0 1 0 0 1 9 1 1 1
810005 0 9 9 9 9 9 9 1 0 9 9 9 9 9 9 9 1 0 0 0
9;
10RUN;
2 Codeblock
DATA STEP
Erklärung :
Manuelle Methode: Verwendung einzelner IF-Bedingungen für jede Variable, um den Wert 9 in einen fehlenden Wert (.) umzuwandeln.
Kopiert!
1DATA health_study2;
2 SET health_study;
3 IF expc = 9 THEN expc = .;
4 IF listen = 9 THEN listen = .;
5 IF good = 9 THEN good = .;
6 IF take = 9 THEN take = .;
7 IF hlprob = 9 THEN hlprob = .;
8 IF share = 9 THEN share = .;
9 IF livaln = 9 THEN livaln = .;
10 IF livchld = 9 THEN livchld = .;
11 IF slpsick = 9 THEN slpsick = .;
12 IF nerves = 9 THEN nerves = .;
13 IF exclude = 9 THEN exclude = .;
14 IF count = 9 THEN count = .;
15 IF tellfl = 9 THEN tellfl = .;
16 IF supress = 9 THEN supress = .;
17 IF nocare = 9 THEN nocare = .;
18 IF satlife = 9 THEN satlife = .;
19 IF vigact = 9 THEN vigact = .;
20 IF liftgroc = 9 THEN liftgroc = .;
21 IF stairs = 9 THEN stairs = .;
22 IF bend = 9 THEN bend = .;
23RUN;
3 Codeblock
DATA STEP
Erklärung :
Optimierte Methode: Verwendung eines Arrays, das alle numerischen Variablen (_numeric_) gruppiert, und einer iterativen Schleife, um die Transformation automatisch auf alle Spalten anzuwenden.
Kopiert!
1DATA health_study3;
2 SET health_study;
3 array variable {*} _numeric_;
4 DO i = 1 to dim(variable);
5 IF variable{i} = 9 THEN variable{i} = .;
6 END;
7RUN;
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.