Publié le :
ETL CREATION_INTERNE

Recodage itératif et Tableaux SAS

Ce code est également disponible en : Deutsch English Español
En attente de validation
Ce script compare deux approches pour nettoyer des données où la valeur '9' représente une valeur manquante. Il crée d'abord un jeu de données test. Ensuite, il montre une approche manuelle et répétitive avec des instructions conditionnelles multiples, puis une approche professionnelle et concise utilisant un ARRAY SAS© et une boucle DO pour traiter toutes les variables numériques dynamiquement.
Analyse des données

Type : CREATION_INTERNE


Les données sont générées directement dans le script via l'instruction DATALINES.

1 Bloc de code
DATA STEP Data
Explication :
Création de la table 'health_study' avec des données brutes incluses dans le code.
Copié !
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 Bloc de code
DATA STEP
Explication :
Méthode manuelle : Utilisation de conditions IF individuelles pour chaque variable afin de convertir la valeur 9 en valeur manquante (.).
Copié !
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 Bloc de code
DATA STEP
Explication :
Méthode optimisée : Utilisation d'un tableau (ARRAY) regroupant toutes les variables numériques (_numeric_) et d'une boucle itérative pour appliquer la transformation automatiquement à l'ensemble des colonnes.
Copié !
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;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.