Veröffentlicht am :
ETL CREATION_INTERNE

Zusammenführung und Analyse von Studentendaten und -ergebnissen

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Das Skript generiert zwei Tabellen (STUDENT und TEST) mittels In-Stream-Daten (DATALINES). Es sortiert diese Tabellen nach der Kennung (ID) und führt dann zwei separate Zusammenführungen durch. Die erste Zusammenführung (roster) behält alle Daten bei und kennzeichnet fehlende Namen. Die zweite (new_roster) behält nur die Studenten, die den Test bestanden haben, behandelt Fälle von Abwesenheit in der Studentendatei und extrahiert den Nachnamen für eine finale Sortierung.
Datenanalyse

Type : CREATION_INTERNE


Die Daten sind direkt über die DATALINES-Anweisung in den Code integriert.

1 Codeblock
DATA STEP Data
Erklärung :
Erstellung der Tabelle STUDENT mit ID und NAME (langes Format $30) aus den In-Stream-Daten.
Kopiert!
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 Codeblock
DATA STEP Data
Erklärung :
Erstellung der Tabelle TEST mit ID und SCORE aus den In-Stream-Daten.
Kopiert!
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 Codeblock
PROC SORT
Erklärung :
Sortierung beider Tabellen nach dem Joinschlüssel ID.
Kopiert!
1PROC SORT DATA=STUDENT;
2 BY ID;
3RUN;
4 
5PROC SORT DATA=TEST;
6 BY ID;
7RUN;
4 Codeblock
DATA STEP Data
Erklärung :
Zusammenführung (Merge) der Tabellen nach ID. Erstellung eines Standardwerts für NAME, wenn die ID nicht in STUDENT vorhanden ist.
Kopiert!
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 Codeblock
DATA STEP Data
Erklärung :
Zweite Zusammenführung, die Datensätze filtert (subsetting IF), um nur die in TEST vorhandenen zu behalten. Extraktion des letzten Wortes von NAME in die Variable 'last'.
Kopiert!
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 Codeblock
PROC SORT
Erklärung :
Sortierung der resultierenden Tabelle new_roster nach Nachname.
Kopiert!
1PROC SORT DATA=new_roster;
2 BY last;
3RUN;
7 Codeblock
PROC PRINT
Erklärung :
Anzeige der Abschlussberichte.
Kopiert!
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;
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.
Urheberrechtsinformationen : Copyright (c) 2016 Scott Bass (sas_l_739 @yahoo.com.au) - Im referenzierten TEMPLATE.sas-Datei erkannt.