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!
DATA STUDENT;
INPUT ID NAME & $30.;
DATALINES;
1 John Torres 5 Alex Antoniou 3 Thomas Friend
2 Sheldon Goldstein 11 Joanne Dipietro 12 Bill Murray
21 Janet Reno 4 Deborah Smith 6 Don Dubin 7 Alice Ford
8 Diane Farley 9 Laura Easton 10 Brian Fishmann
13 Eric Garrett 14 James Galt 15 Toni Gilman
;
1
DATA STUDENT;
2
INPUT ID NAME & $30.;
3
DATALINES;
4
1 John Torres 5 Alex Antoniou 3 Thomas Friend
5
2 Sheldon Goldstein 11 Joanne Dipietro 12 Bill Murray
6
21 Janet Reno 4 Deborah Smith 6 Don Dubin 7 Alice Ford
7
8 Diane Farley 9 Laura Easton 10 Brian Fishmann
8
13 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.
Explicación : Clasificación de ambas tablas por la clave de unión ID.
¡Copiado!
proc sort data=STUDENT;
by ID;
run;
proc sort data=TEST;
by ID;
run;
1
PROC SORTDATA=STUDENT;
2
BY ID;
3
RUN;
4
5
PROC SORTDATA=TEST;
6
BY ID;
7
RUN;
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!
data roster;
merge STUDENT (in=in_student_file) TEST (in=in_test_file);
by ID;
if not in_student_file then NAME='Not in Student File';
run;
1
DATA 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';
5
RUN;
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!
data new_roster;
merge STUDENT (in=in_student_file) TEST (in=in_test_file);
by ID;
if in_test_file;
if not in_student_file then do;
NAME='Not in Student File';
last='ZZZ';
end;
else last=scan(NAME, -1);
run;
1
DATA 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 THENDO;
6
NAME='Not in Student File';
7
last='ZZZ';
8
END;
9
ELSE last=scan(NAME, -1);
10
RUN;
6 Bloque de código
PROC SORT
Explicación : Clasificación de la tabla resultante new_roster por apellido.
¡Copiado!
proc sort data=new_roster;
by last;
run;
1
PROC SORTDATA=new_roster;
2
BY last;
3
RUN;
7 Bloque de código
PROC PRINT
Explicación : Visualización de los informes finales.
¡Copiado!
proc print data=roster;
title'Problem 14.8a';
id NAME;
run;
proc print data=new_roster;
title'Problem 14.8b';
id NAME;
var ID SCORE;
run;
1
PROC PRINTDATA=roster;
2
title'Problem 14.8a';
3
id NAME;
4
RUN;
5
6
PROC PRINTDATA=new_roster;
7
title'Problem 14.8b';
8
id NAME;
9
var ID SCORE;
10
RUN;
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
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.