El script comienza definiendo dos conjuntos de datos temporales, 'company' y 'finance', utilizando bloques 'datalines' para la entrada directa de datos. El conjunto de datos 'company' contiene información demográfica de los empleados (Nombre, Edad, Sexo), mientras que 'finance' contiene detalles financieros (Número de teléfono, Nombre, Salario). Cada conjunto de datos se ordena por 'Name' usando PROC SORT, lo cual es un paso preparatorio esencial para la fusión. Los conjuntos de datos ordenados se imprimen a continuación. Luego, el script fusiona 'company' y 'finance' en un nuevo conjunto de datos 'employeeinfo' basado en la variable común 'Name'. Se utilizan procedimientos PROC PRINT adicionales para mostrar el conjunto de datos fusionado, así como para demostrar el uso de las opciones globales 'firstobs' y 'obs', la cláusula 'WHERE' para el filtrado, y un intento de cálculo de suma para una variable categórica (que se anota como un posible error). Finalmente, se utilizan PROC CONTENTS y PROC DATASETS para examinar los metadatos de los conjuntos de datos, en particular 'company'.
Análisis de datos
Type : CREATION_INTERNE
Los datos para los conjuntos de datos 'company' y 'finance' se crean directamente en el script SAS a través de bloques 'datalines'. No se utilizan datos externos ni bibliotecas SASHELP como fuente principal de datos para estos conjuntos de datos.
1 Bloque de código
DATA STEP Data
Explicación : Este bloque DATA STEP crea el conjunto de datos 'company' utilizando datos en línea proporcionados en el bloque 'datalines'. Define las variables 'Name' (carácter), 'Age' (numérica) y 'Gender' (carácter) con sus respectivas posiciones de columna. Este conjunto de datos contiene información básica sobre los empleados.
¡Copiado!
data company;
input
Name $ 1-25
Age 27-28
Gender $ 30;
datalines;
Vincent, Martina 34 F
Phillipon, Marie-Odile 28 F
Gunter, Thomas 27 M
Harbinger, Nicholas 36 M
Benito, Gisela 32 F
Rudelich, Herbert 39 M
Sirignano, Emily 12 F
Morrison, Michael 32 M
;
1
DATA company;
2
INPUT
3
Name $ 1-25
4
Age 27-28
5
Gender $ 30;
6
DATALINES;
7
Vincent, Martina 34 F
8
Phillipon, Marie-Odile 28 F
9
Gunter, Thomas 27 M
10
Harbinger, Nicholas 36 M
11
Benito, Gisela 32 F
12
Rudelich, Herbert 39 M
13
Sirignano, Emily 12 F
14
Morrison, Michael 32 M
15
;
16
2 Bloque de código
PROC SORT
Explicación : Este PROC SORT ordena el conjunto de datos 'company' por la variable 'Name'. La ordenación es esencial para operaciones posteriores como la fusión ('MERGE') que generalmente requieren que los conjuntos de datos de entrada estén ordenados por las variables de fusión ('BY' variables).
¡Copiado!
proc sort data=company;
by Name;
run;
1
PROC SORTDATA=company;
2
BY Name;
3
RUN;
4
3 Bloque de código
PROC PRINT
Explicación : Este PROC PRINT muestra el contenido del conjunto de datos 'company' en la ventana de salida. El 'title' especifica el título del informe impreso, haciéndolo más descriptivo.
¡Copiado!
proc print data=company;
title 'Company';
run;
1
PROC PRINTDATA=company;
2
title 'Company';
3
RUN;
4
4 Bloque de código
DATA STEP Data
Explicación : Este segundo bloque DATA STEP crea el conjunto de datos 'finance', similar al bloque 'company', utilizando 'datalines'. Captura las variables 'Phone_number' (carácter), 'Name' (carácter) y 'Salary' (numérica), conteniendo información financiera para algunos empleados.
¡Copiado!
data finance;
input Phone_number $ 1-11
Name $ 13-40
Salary;
datalines;
074-53-9892 Vincent, Martina 35000
776-84-5391 Phillipon, Marie-Odile 29750
929-75-0218 Gunter, Thomas 27500
446-93-2122 Harbinger, Nicholas 33900
228-88-9649 Benito, Gisela 28000
029-46-9261 Rudelich, Herbert 35000
442-21-8075 Sirignano, Emily 5000
;
1
DATA finance;
2
INPUT Phone_number $ 1-11
3
Name $ 13-40
4
Salary;
5
DATALINES;
6
074-53-9892 Vincent, Martina 35000
7
776-84-5391 Phillipon, Marie-Odile 29750
8
929-75-0218 Gunter, Thomas 27500
9
446-93-2122 Harbinger, Nicholas 33900
10
228-88-9649 Benito, Gisela 28000
11
029-46-9261 Rudelich, Herbert 35000
12
442-21-8075 Sirignano, Emily 5000
13
;
14
5 Bloque de código
PROC SORT
Explicación : Similar a la ordenación del conjunto de datos 'company', este PROC SORT ordena el conjunto de datos 'finance' por la variable 'Name' en preparación para la operación de fusión.
¡Copiado!
proc sort data=finance;
by Name;
run;
1
PROC SORTDATA=finance;
2
BY Name;
3
RUN;
4
6 Bloque de código
PROC PRINT
Explicación : Este PROC PRINT muestra el contenido del conjunto de datos 'finance' con el título 'Employee Information', proporcionando una vista de los datos financieros individuales.
¡Copiado!
proc print data=finance;
title 'Employee Information';
run;
1
PROC PRINTDATA=finance;
2
title 'Employee Information';
3
RUN;
4
7 Bloque de código
DATA STEP Data
Explicación : Este DATA STEP fusiona los conjuntos de datos 'company' y 'finance' en un nuevo conjunto de datos llamado 'employeeinfo'. La cláusula 'BY name;' indica que la fusión debe realizarse haciendo coincidir las observaciones en función de la variable 'Name'. Si un nombre aparece en un conjunto de datos pero no en el otro, los valores de las variables no coincidentes serán faltantes. Los conjuntos de datos de entrada deben estar ordenados por la variable 'BY'.
¡Copiado!
data employeeinfo;
merge company finance;
by name;
run;
1
DATA employeeinfo;
2
MERGE company finance;
3
BY name;
4
RUN;
5
8 Bloque de código
PROC PRINT
Explicación : Este PROC PRINT muestra el conjunto de datos 'employeeinfo', que es el resultado de la fusión. El uso de 'title' y 'title2' permite definir dos líneas de título para la salida del informe.
¡Copiado!
proc print data=employeeinfo;
title 'Laxmi is Cute!';
title2 'very cute';
run;
1
PROC PRINTDATA=employeeinfo;
2
title 'Laxmi is Cute!';
3
title2 'very cute';
4
RUN;
5
9 Bloque de código
PROC CONTENTS
Explicación : La PROC CONTENTS proporciona metadatos detallados sobre el conjunto de datos 'company'. Esto incluye información como el número de observaciones, el número de variables, los nombres de las variables, sus tipos (numérico o carácter), sus longitudes y sus formatos.
¡Copiado!
proc contents data = company;
run;
1
PROC CONTENTSDATA = company;
2
RUN;
3
10 Bloque de código
PROC DATASETS
Explicación : La PROC DATASETS es un procedimiento de gestión de bibliotecas que permite varias operaciones en conjuntos de datos y catálogos. Aquí, la instrucción 'contents data= company;' se utiliza para obtener los mismos metadatos que PROC CONTENTS para el conjunto de datos 'company'. A menudo se utiliza en un contexto donde se realizan varias operaciones de gestión de conjuntos de datos dentro de una única ejecución de PROC DATASETS.
¡Copiado!
proc datasets;
contents data= company;
run;
1
PROC DATASETS;
2
contents DATA= company;
3
RUN;
4
11 Bloque de código
OPTIONS et PROC PRINT
Explicación : Este bloque demuestra el uso de las opciones globales 'firstobs' y 'obs'. 'options firstobs=3;' indica a SAS que comience a leer los datos a partir de la tercera observación, y 'obs=9;' indica que se detenga después de la novena observación. Por lo tanto, este PROC PRINT mostrará las observaciones 3 a 9 (incluidas) del conjunto de datos 'employeeinfo'. Estas opciones afectan a todos los pasos de datos y procedimientos posteriores hasta que se reinicien o modifiquen.
¡Copiado!
options firstobs= 3 obs=9;
proc print data = employeeinfo;
run;
1
options firstobs= 3 obs=9;
2
PROC PRINTDATA = employeeinfo;
3
RUN;
4
12 Bloque de código
PROC PRINT
Explicación : Este PROC PRINT utiliza una cláusula 'WHERE' para filtrar las observaciones del conjunto de datos 'employeeinfo'. Solo se mostrarán las observaciones donde la variable 'Name' contenga la subcadena 'Vi' (insensible a mayúsculas y minúsculas por defecto en SAS para 'contains' a menos que se cambie la opción). Esto permite seleccionar subconjuntos de datos específicos para su visualización.
¡Copiado!
proc print data = employeeinfo;
where Name contains 'Vi';
run;
1
PROC PRINTDATA = employeeinfo;
2
where Name contains 'Vi';
3
RUN;
4
13 Bloque de código
PROC PRINT
Explicación : Este PROC PRINT intenta generar un informe con subtotales. La instrucción 'by Name;' agrupa las observaciones por nombre, y 'sum Gender;' está destinada a calcular totales para la variable 'Gender'. Sin embargo, 'Gender' es una variable de tipo carácter, y la instrucción 'SUM' en PROC PRINT está diseñada para variables numéricas. Esto resultará en una advertencia o error en el log de SAS y la suma para 'Gender' no se mostrará. La instrucción 'ID Gender;' significa que la variable 'Gender' se utilizará como variable de identificación en el informe, pero no se utiliza típicamente en este contexto para una agrupación significativa con 'BY' y 'SUM' en una variable categórica.
¡Copiado!
proc print data = employeeinfo;
title 'Sub total';
sum Gender;
by Name;
ID Gender;
run;
1
PROC PRINTDATA = employeeinfo;
2
title 'Sub total';
3
sum Gender;
4
BY Name;
5
ID Gender;
6
RUN;
7
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.
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.