Publié le :
ETL CREATION_INTERNE

Fusion et Analyse de Données Étudiants et Scores

Ce code est également disponible en : Deutsch English Español
En attente de validation
Le script génère deux tables (STUDENT et TEST) via des données en ligne (DATALINES). Il trie ces tables par identifiant (ID) puis effectue deux fusions distinctes. La première fusion (roster) conserve toutes les données en signalant les noms manquants. La seconde (new_roster) ne conserve que les étudiants ayant passé le test, gère les cas d'absence dans le fichier étudiant, et extrait le nom de famille pour un tri final.
Analyse des données

Type : CREATION_INTERNE


Les données sont directement intégrées dans le code via l'instruction DATALINES.

1 Bloc de code
DATA STEP Data
Explication :
Création de la table STUDENT avec ID et NAME (format long $30) à partir des données in-stream.
Copié !
1DATA STUDENT;
2 INPUT ID NAME & $30.;
3DATALINES;
41 John Torres 5 Alex Antoniou 3 Thomas Friend
52 Sheldon Goldstein 11 Joanne Dipietro 12 Bill Murray
621 Janet Reno 4 Deborah Smith 6 Don Dubin 7 Alice Ford
78 Diane Farley 9 Laura Easton 10 Brian Fishmann
813 Eric Garrett 14 James Galt 15 Toni Gilman
9;
2 Bloc de code
DATA STEP Data
Explication :
Création de la table TEST avec ID et SCORE à partir des données in-stream.
Copié !
1DATA TEST;
2 INPUT ID SCORE;
3DATALINES;
415 95 1 80 3 98 21 75 4 87 14 67 13 91 11 85 12 57
529 93
6;
3 Bloc de code
PROC SORT
Explication :
Tri des deux tables par la clé de jointure ID.
Copié !
1PROC SORT DATA=STUDENT;
2 BY ID;
3RUN;
4 
5PROC SORT DATA=TEST;
6 BY ID;
7RUN;
4 Bloc de code
DATA STEP Data
Explication :
Fusion (Merge) des tables par ID. Création d'une valeur par défaut pour NAME si l'ID n'est pas présent dans STUDENT.
Copié !
1DATA roster;
2 MERGE STUDENT (in=in_student_file) TEST (in=in_test_file);
3 BY ID;
4 IF not in_student_file THEN NAME='Not in Student File';
5RUN;
5 Bloc de code
DATA STEP Data
Explication :
Seconde fusion filtrant les enregistrements (subsetting IF) pour ne garder que ceux présents dans TEST. Extraction du dernier mot de NAME vers la variable 'last'.
Copié !
1DATA new_roster;
2 MERGE STUDENT (in=in_student_file) TEST (in=in_test_file);
3 BY ID;
4 IF in_test_file;
5 IF not in_student_file THEN DO;
6 NAME='Not in Student File';
7 last='ZZZ';
8 END;
9 ELSE last=scan(NAME, -1);
10RUN;
6 Bloc de code
PROC SORT
Explication :
Tri de la table résultante new_roster par nom de famille.
Copié !
1PROC SORT DATA=new_roster;
2 BY last;
3RUN;
7 Bloc de code
PROC PRINT
Explication :
Affichage des rapports finaux.
Copié !
1PROC PRINT DATA=roster;
2 title'Problem 14.8a';
3 id NAME;
4RUN;
5 
6PROC PRINT DATA=new_roster;
7 title'Problem 14.8b';
8 id NAME;
9 var ID SCORE;
10RUN;
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.
Informations de Copyright : Copyright (c) 2016 Scott Bass (sas_l_739@yahoo.com.au) - Detecté dans le fichier référencé TEMPLATE.sas