Publié le :
ETL CREATION_INTERNE

Création de variables et filtrage de données avec l'étape DATA

Ce code est également disponible en : Deutsch English Español
En attente de validation
L'étape DATA permet de construire une nouvelle table CAS nommée CreditQualify à partir d'une table existante, CreditScores. Des variables catégorielles comme 'Age_Range', 'FICO_Rating' et 'Credit_Qualification' sont créées en fonction des valeurs numériques des variables 'Age' et 'Credit_Score'. Les classifications sont faites en utilisant des blocs conditionnels IF-THEN/ELSE. Le code inclut l'utilisation de sessions CAS ('sessref=mysession') et la consultation de la table résultante via l'action 'table.fetch' de PROC CAS.
Analyse des données

Type : CREATION_INTERNE


L'exemple se base sur une table CAS 'mycaslib.creditscores'. Pour rendre l'exemple autonome, nous allons simuler cette table avec un DATA step et des datalines.

1 Bloc de code
DATA STEP Data
Explication :
Ce bloc de code crée d'abord une table source 'mycaslib.creditscores' avec des données factices pour l'âge et le score de crédit. Ensuite, il exécute l'étape DATA originale. Celle-ci lit les observations de 'mycaslib.creditscores' et crée trois nouvelles variables catégorielles : 'Age_Range' (plage d'âge), 'FICO_Rating' (évaluation du score FICO) et 'Credit_Qualification' (qualification de crédit). Les valeurs de ces variables sont attribuées conditionnellement en fonction de 'Age' et 'Credit_Score' à l'aide des instructions IF-THEN/ELSE. La table résultante 'mycaslib.creditqualify' est stockée sur le serveur CAS.
Copié !
1DATA mycaslib.creditscores;
2 INPUT Age Credit_Score;
3 DATALINES;
4 20 550
5 30 680
6 40 750
7 50 810
8 60 400
9 70 700
10 22 350
11 35 600
12 45 780
13 55 850
14 65 590
15 ;
16RUN;
17 
18DATA mycaslib.creditqualify / sessref=mysession;
19 SET mycaslib.creditscores;
20 LENGTH Age_Range $8;
21 IF Age in (18, 19, 20, 21, 22, 23, 24, 25) THEN Age_Range="18-25";
22 ELSE IF Age in (26, 27, 28, 29, 30, 31, 32, 33, 34, 35) THEN Age_Range="26-35";
23 ELSE IF Age in (36, 37, 38, 39, 40, 41, 42, 43, 44, 45) THEN Age_Range="36-45";
24 ELSE IF Age in (46, 47, 48, 49, 50, 51, 52, 53, 54, 55) THEN Age_Range="46-55";
25 ELSE IF Age in (56, 57, 58, 59, 60, 61, 62, 63, 64) THEN Age_Range="56-64";
26 ELSE IF Age>=65 THEN Age_Range="65+";
27 
28 LENGTH FICO_Rating $12;
29 IF 300<=Credit_Score<=570 THEN FICO_Rating="Very Poor";
30 ELSE IF 580<=Credit_Score<=669 THEN FICO_Rating="Fair";
31 ELSE IF 670<=Credit_Score<=739 THEN FICO_Rating="Good";
32 ELSE IF 740<=Credit_Score<=799 THEN FICO_Rating="Very Good";
33 ELSE IF Credit_Score>=800 THEN FICO_Rating="Exceptional";
34 
35 LENGTH Credit_Qualification $12;
36 IF Credit_Score>=740 THEN Credit_Qualification="Platinum";
37 ELSE IF 650<=Credit_Score<=739 THEN Credit_Qualification="Gold";
38 ELSE IF 450<=Credit_Score<=649 THEN Credit_Qualification="Secured Card";
39 ELSE IF Credit_Score<=449 THEN Credit_Qualification="N/A";
40RUN;
2 Bloc de code
PROC CAS
Explication :
Ce bloc de code utilise la procédure CAS pour exécuter l'action 'table.fetch'. Cette action permet de récupérer et d'afficher les observations de la table CAS 'creditqualify' qui a été créée lors de l'étape DATA précédente.
Copié !
1 
2PROC CAS;
3TABLE.fetch / TABLE="creditqualify" index=false;
4QUIT;
5 
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.
Banner
Le Conseil de l'Expert
Expert
Stéphanie
Spécialiste Machine Learning et IA.
« Pour des classifications basées sur de nombreuses plages de valeurs (comme les tranches d'âge), vous pouvez simplifier votre code en utilisant la fonction PUT avec un format utilisateur (PROC FORMAT). Cela rendrait votre DATA Step beaucoup plus lisible et permettrait de réutiliser la même logique de segmentation dans d'autres programmes sans avoir à réécrire tous les IF-THEN. »