Publicado el :
ETL CREATION_INTERNE

Fusión y Análisis de Datos de Estudiantes y Puntuaciones

Este código también está disponible en: Deutsch English Français
En espera de validación
El script genera dos tablas (STUDENT y TEST) a través de datos en línea (DATALINES). Ordena estas tablas por identificador (ID) y luego realiza dos fusiones distintas. La primera fusión (roster) conserva todos los datos, señalando los nombres faltantes. La segunda (new_roster) conserva solo a los estudiantes que han aprobado el examen, gestiona los casos de ausencia en el archivo del estudiante y extrae el apellido para una clasificación final.
Análisis de datos

Type : CREATION_INTERNE


Los datos se integran directamente en el código a través de la instrucción DATALINES.

1 Bloque de código
DATA STEP Data
Explicación :
Creación de la tabla STUDENT con ID y NAME (formato largo $30) a partir de los datos en línea.
¡Copiado!
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 Bloque de código
DATA STEP Data
Explicación :
Creación de la tabla TEST con ID y SCORE a partir de los datos en línea.
¡Copiado!
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 Bloque de código
PROC SORT
Explicación :
Clasificación de ambas tablas por la clave de unión ID.
¡Copiado!
1PROC SORT DATA=STUDENT;
2 BY ID;
3RUN;
4 
5PROC SORT DATA=TEST;
6 BY ID;
7RUN;
4 Bloque de código
DATA STEP Data
Explicación :
Fusión (Merge) de las tablas por ID. Creación de un valor predeterminado para NAME si el ID no está presente en STUDENT.
¡Copiado!
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 Bloque de código
DATA STEP Data
Explicación :
Segunda fusión que filtra los registros (subsetting IF) para mantener solo aquellos presentes en TEST. Extracción de la última palabra de NAME en la variable 'last'.
¡Copiado!
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 Bloque de código
PROC SORT
Explicación :
Clasificación de la tabla resultante new_roster por apellido.
¡Copiado!
1PROC SORT DATA=new_roster;
2 BY last;
3RUN;
7 Bloque de código
PROC PRINT
Explicación :
Visualización de los informes finales.
¡Copiado!
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;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
Información de copyright : Copyright (c) 2016 Scott Bass (sas_l_739 @yahoo.com.au) - Detectado en el archivo referenciado TEMPLATE.sas