El script comienza creando dos conjuntos de datos temporales, 'empsau' (empleados) y 'phonec' (teléfonos), a través de bloques DATA STEP utilizando DATALINES. Luego, se ejecutan varios bloques DATA STEP para demostrar escenarios de fusión: una fusión completa (equivalente a un full outer join), una fusión para conservar solo los registros coincidentes (equivalente a un inner join), y finalmente fusiones para aislar los registros presentes únicamente en el primer conjunto de datos, únicamente en el segundo, o en ninguno de los dos. Cada operación de fusión es seguida por una PROC PRINT para mostrar el resultado.
Análisis de datos
Type : CREATION_INTERNE
Los datos 'empsau' y 'phonec' se crean directamente en el script a través de bloques DATA STEP y la instrucción DATALINES. Luego se utilizan y transforman dentro del mismo script.
1 Bloque de código
DATA STEP Data
Explicación : Este bloque DATA STEP crea el conjunto de datos temporal 'empsau' que contiene información sobre los empleados (Nombre, Género, ID Empleado). Los datos se proporcionan directamente en el script a través de la instrucción DATALINES.
¡Copiado!
data empsau;
input First $ Gender $ EmpID;
datalines;
Togar M 121150
Kylie F 121151
Birin M 121152
;
1
DATA empsau;
2
INPUT First $ Gender $ EmpID;
3
DATALINES;
4
Togar M 121150
5
Kylie F 121151
6
Birin M 121152
7
;
2 Bloque de código
DATA STEP Data
Explicación : Este bloque DATA STEP crea el conjunto de datos temporal 'phonec' que contiene los números de teléfono asociados a los ID de Empleado. Los datos también se integran directamente en el script a través de DATALINES.
Explicación : Este bloque DATA STEP realiza una fusión completa (full outer join) de los conjuntos de datos 'empsau' y 'phonec' basada en la variable común 'EmpID'. Las opciones IN= (Emps, Cell) crean variables booleanas temporales (_Emps y _Cell) que indican si un registro proviene de 'empsau' o 'phonec' respectivamente. La PROC PRINT muestra todos los registros fusionados, incluidos los presentes en solo uno de los dos conjuntos de datos.
¡Copiado!
data empsauc;
merge empsau(in=Emps)
phonec(in=Cell);
by EmpID;
run;
proc print data=empsauc;
run;
1
DATA empsauc;
2
MERGE empsau(in=Emps)
3
phonec(in=Cell);
4
BY EmpID;
5
RUN;
6
7
PROC PRINTDATA=empsauc;
8
RUN;
4 Bloque de código
DATA STEP
Explicación : Este bloque DATA STEP realiza una unión interna (inner join). Después de la fusión, la condición 'if Emps=1 and Cell=1;' filtra los registros para conservar solo aquellos cuyo ID de Empleado está presente tanto en 'empsau' como en 'phonec'. La PROC PRINT muestra solo las coincidencias.
¡Copiado!
data empsauc;
merge empsau(in=Emps)
phonec(in=Cell);
by EmpID;
if Emps=1 and Cell=1;
run;
proc print data=empsauc;
run;
1
DATA empsauc;
2
MERGE empsau(in=Emps)
3
phonec(in=Cell);
4
BY EmpID;
5
IF Emps=1 and Cell=1;
6
RUN;
7
8
PROC PRINTDATA=empsauc;
9
RUN;
5 Bloque de código
DATA STEP
Explicación : Este bloque DATA STEP identifica los registros que están presentes en 'empsau' (Emps=1) pero ausentes de 'phonec' (Cell=0). Esto corresponde a un anti-join izquierdo. La PROC PRINT muestra los empleados sin coincidencia telefónica en 'phonec'.
¡Copiado!
data empsauc;
merge empsau(in=Emps)
phonec(in=Cell);
by EmpID;
if Emps=1 and Cell=0;
run;
proc print data=empsauc;
run;
1
DATA empsauc;
2
MERGE empsau(in=Emps)
3
phonec(in=Cell);
4
BY EmpID;
5
IF Emps=1 and Cell=0;
6
RUN;
7
8
PROC PRINTDATA=empsauc;
9
RUN;
6 Bloque de código
DATA STEP
Explicación : Este bloque DATA STEP identifica los registros que están presentes en 'phonec' (Cell=1) pero ausentes de 'empsau' (Emps=0). Esto corresponde a un anti-join derecho. La PROC PRINT muestra los números de teléfono sin coincidencia de empleado en 'empsau'.
¡Copiado!
data empsauc;
merge empsau(in=Emps)
phonec(in=Cell);
by EmpID;
if Emps=0 and Cell=1;
run;
proc print data=empsauc;
run;
1
DATA empsauc;
2
MERGE empsau(in=Emps)
3
phonec(in=Cell);
4
BY EmpID;
5
IF Emps=0 and Cell=1;
6
RUN;
7
8
PROC PRINTDATA=empsauc;
9
RUN;
7 Bloque de código
DATA STEP
Explicación : Este bloque DATA STEP selecciona todos los registros que no coinciden. La condición 'if Emps=0 or Cell=0;' filtra los registros que están presentes solo en 'empsau' o solo en 'phonec'. La PROC PRINT muestra los registros que no encuentran coincidencia en el otro conjunto de datos.
¡Copiado!
data empsauc;
merge empsau(in=Emps)
phonec(in=Cell);
by EmpID;
if Emps=0 or Cell=0;
run;
proc print data=empsauc;
run;
1
DATA empsauc;
2
MERGE empsau(in=Emps)
3
phonec(in=Cell);
4
BY EmpID;
5
IF Emps=0 or Cell=0;
6
RUN;
7
8
PROC PRINTDATA=empsauc;
9
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.
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.