SAS: fusión de conjuntos de datos

Se pueden combinar varios conjuntos de datos SAS en función de una variable común específica para crear un único conjunto de datos. Esto se hace con UNIÓN declaración y A declaración. El número total de casos en el conjunto de datos combinado suele ser menor que la suma del número de casos en los conjuntos de datos originales. Esto se debe a que las variables que componen ambos conjuntos de datos se combinan en un registro en función de la coincidencia en el valor de la variable común.

Los siguientes son dos requisitos previos para combinar conjuntos de datos:

  • Los conjuntos de datos de entrada deben tener al menos una variable común para combinar.
  • los conjuntos de datos de entrada deben ordenarse por las variables comunes que se utilizarán para la concatenación.

Sintaxis

La sintaxis básica para la declaración MERGE y BY en SAS es:

MERGE Data-Set 1 Data-Set 2
BY Common Variable

A continuación se muestra la descripción de los parámetros utilizados:

  • Conjunto de datos1, Conjunto de datos2 – nombres de conjuntos de datos escritos uno tras otro.

  • Variable compartida es una variable, basada en los valores coincidentes de los cuales se fusionarán los conjuntos de datos.

Fusionar datos

Echemos un vistazo a la combinación de datos con un ejemplo.

Ejemplo

Considere dos conjuntos de datos SAS, uno que contiene la identificación del empleado con el nombre y el salario y el otro que contiene la identificación del empleado con la identificación del empleado y el departamento. En este caso, para obtener información completa de cada empleado, podemos combinar estos dos conjuntos de datos. El conjunto de datos final seguirá teniendo una observación para cada empleado, pero contendrá variables tanto de salario como de departamento.

# Data set 1	
ID NAME SALARY	
1 Rick 623.3		 
2 Dan 515.2 		
3 Mike 611.5 		
4 Ryan 729.1 
5 Gary 843.25 
6 Tusar 578.6 
7 Pranab 632.8 
8 Rasmi 722.5 

# Data set 2
ID DEPT
1 IT 
2 OPS
3 IT 
4 HR 
5 FIN 
6 IT 
7 OPS
8 FIN 

# Merged data set
ID NAME SALARY DEPT	
1 Rick 623.3	IT 		 
2 Dan 515.2 	OPS	
3 Mike 611.5 	IT 	
4 Ryan 729.1    HR 
5 Gary 843.25   FIN 
6 Tusar 578.6   IT 
7 Pranab 632.8  OPS
8 Rasmi 722.5   FIN 

El resultado anterior se logra con el siguiente código, en el que se usa la variable compartida (ID) en la cláusula BY. Tenga en cuenta que los casos de ambos conjuntos de datos ya están ordenados en la columna ID.

DATA SALARY; 
   INPUT empid name $ salary  ; 
DATALINES; 
1 Rick 623.3		 
2 Dan 515.2 		
3 Mike 611.5 		
4 Ryan 729.1 
5 Gary 843.25 
6 Tusar 578.6 
7 Pranab 632.8 
8 Rasmi 722.5 
;
RUN; 
DATA DEPT; 
   INPUT empid dEPT $ ; 
DATALINES; 
1 IT 
2 OPS
3 IT 
4 HR 
5 FIN 
6 IT 
7 OPS
8 FIN 
;
RUN; 
DATA All_details;
MERGE SALARY DEPT;
BY (empid);
RUN;
PROC PRINT DATA = All_details; 
RUN;  

Faltan valores en la columna de coincidencia

Puede haber ocasiones en las que algunos de los valores de una variable común no coincidan en los conjuntos de datos. En tales casos, los conjuntos de datos aún se fusionan, pero el resultado son valores faltantes.

Ejemplo

Considere el caso en el que el ID de empleado 3 falta en el conjunto de datos de salario y el empleado 6 no está presente en el conjunto de datos DEPT. Cuando se aplica el código anterior, obtenemos el resultado a continuación.

ID NAME SALARY DEPT	
1 Rick 623.3	IT 		 
2 Dan 515.2 	OPS	
3 .		.		IT
4 Ryan 729.1    HR 
5 Gary 843.25   FIN 
6 Tusar 578.6   .
7 Pranab 632.8  OPS
8 Rasmi 722.5   FIN 

Combinando solo partidos

Para evitar valores perdidos en el resultado, podemos considerar almacenar solo los casos con valores coincidentes para la variable compartida. Esto se logra mediante el uso de
EN declaración. Es necesario cambiar la declaración de combinación del programa SAS.

Ejemplo

En el siguiente ejemplo EN= valor solo almacena casos donde los valores son de ambos conjuntos de datos SALARIO y DEPARTAMENTO partido.

DATA All_details;
MERGE SALARY(IN = a) DEPT(IN = b);
BY (empid);
IF a = 1 and b = 1;
RUN;
PROC PRINT DATA = All_details; 
RUN;  

Después de ejecutar el programa SAS anterior con la parte modificada anterior, obtenemos el siguiente resultado.

1 Rick 623.3	IT 		 
2 Dan 515.2 	OPS	
4 Ryan 729.1    HR 
5 Gary 843.25   FIN 
7 Pranab 632.8  OPS
8 Rasmi 722.5   FIN 

🚫