Fusión en SAS | Conjuntos de datos de fusión de SAS

Contenidos

En mi artículo anterior, «Combinación de conjuntos de datos en SAS – Simplificado», analizamos tres métodos para combinar conjuntos de datos: anexar, concatenar e intercalar. En este artículo, veremos el método más común y utilizado para combinar conjuntos de datos: FUSIÓN o UNIÓN.

La necesidad de unir / fusionar conjuntos de datos:

Antes de entrar en detalles, comprendamos por qué realmente necesitamos unirnos / fusionarnos. Siempre que tengamos información dividida y disponible en dos o más conjuntos de datos y queramos combinarlos en un solo conjunto de datos, necesitamos fusionar / unir estas tablas. Una de las principales cosas a tener en cuenta es que la fusión debe basarse en criterios o campos comunes. Por ejemplo, en una empresa minorista, tenemos una tabla de transacciones diarias (la tabla contiene detalles de productos, detalles de ventas y detalles de clientes) y una tabla de inventario (que tiene detalles de productos y cantidad disponible). Ahora bien, para tener la información sobre Inventario o la disponibilidad de un producto, ¿qué debemos hacer? Combine la tabla Transacción con la tabla Inventario basada en Product_Code y reste la cantidad vendida de la cantidad disponible.

La fusión / unión puede ser de varios tipos y depende de los requisitos comerciales y de la relación entre los conjuntos de datos. Primero, veamos varios tipos de relación que pueden tener los conjuntos de datos.

  1. Cuando para cada valor de variable común (digamos Variable ‘x’) en el primer conjunto de datos, el segundo conjunto de datos tiene solo un valor coincidente para esa variable común ‘x’, entonces se llama Doce y cincuenta y nueve de la noche relación.
  2. Cuando para los valores de la variable común (digamos variable ‘y’) en el primer conjunto de datos, otros conjuntos de datos tienen más de un valor coincidente para esa variable común ‘y’, entonces se llama Uno a muchos relación.
  3. Cuando ambos conjuntos de datos tienen múltiples entradas para el mismo valor de variable común, entonces se llama Muchos a muchos relación.

join_merge_sas-6434065

En SAS, podemos realizar uniones / fusiones a través de varias formas, aquí discutiremos las formas más comunes: Data Step y PROC SQL. En el paso de Datos, usamos la instrucción Merge para realizar uniones, mientras que en PROC SQL, escribimos una consulta SQL. Analicemos el paso de datos primero:

PASOS DE DATOS

Syntax:-
 Data Dataset;
 Merge Dataset1 Dataset2 Dataset3 ...Datasetn;
 By CommonVariable1 CommonVariable2......CommonVariablen;
 Run;

Nota: – Los conjuntos de datos deben ordenarse por variable (s) común y el nombre, tipo y longitud de la variable común deben ser los mismos para todos los conjuntos de datos de entrada.

Veamos algunos escenarios para cada una de las relaciones entre conjuntos de datos de entrada.

Relación UNO a UNO

Escenario 1 En los siguientes conjuntos de datos de entrada, puede ver que hay una relación uno a uno entre estas dos tablas en Identificación del Estudiante. Ahora queremos crear un conjunto de datos. MARCAS, donde tenemos todos los student_ids únicos con las respectivas calificaciones de matemáticas y física. Si student_id no está disponible en la tabla de Matemáticas, entonces math_marks debería tener un valor faltante y viceversa.

sas_one_to_one_merge1-9643061

Solución usando Pasos de datos: –

sas_one_to_one_result-6292137

Cómo funciona:-

  1. SAS compara ambos conjuntos de datos y crea un PDV (Vector de datos de programa) para todas las variables únicas y las inicializa con valores faltantes (el Vector de datos de programa es un intermediario entre los conjuntos de datos de entrada y salida). En el ejemplo actual, crearía un PDV como este:pdv-8085426
  2. Lee la primera observación de los conjuntos de datos de entrada y compara los valores de la variable BY en ambos conjuntos de datos:
    1. si los valores son iguales, se compara con el valor de la variable BY en PDV.
      1. si no es igual, las variables de PDV se reinicializan con los valores perdidos y el valor de la observación actual se copia en el PDV mientras que la otra observación permanece perdida
      2. Si es igual, las variables de PDV no se reinicializan. El valor disponible de la observación actual se actualiza en el PDV
      3. Después de eso, el puntero de registro se mueve a la siguiente observación en ambos conjuntos de datos y, mientras se ejecuta la instrucción RUN, los valores de PDV se transfieren al conjunto de datos de salida.
    2. Si el valor de Por variable no coincide, la observación del conjunto de datos que tiene el valor más bajo se copia en PDV. El puntero de registro del conjunto de datos que tiene un valor de variable BY más bajo se mueve a la siguiente observación y el paso 2 (a) se repite nuevamente.
  3. Los pasos anteriores se repiten hasta que se alcanza el EOF de ambos conjuntos de datos.

Puede realizar un ensayo para evaluar el conjunto de datos de resultados.

Escenario 2: – Basándonos en los conjuntos de datos de entrada del escenario 1, queremos crear los siguientes conjuntos de datos de salida.

merge_14-1908412

Solución usando pasos de datos: – Escribamos un código similar al escenario 1 con la opción IN. sas_in_pdv1-1970267Arriba, puede ver que hemos usado la opción IN con ambos conjuntos de datos de entrada y valores asignados de estos a las variables temporales MATH y PHYS porque son variables temporales, por lo que no podemos verlas en el conjunto de datos de salida.

Le he mostrado la tabla (datos PDV) que tiene un valor variable para todas las observaciones junto con las variables temporales. Ahora, con base en el valor de estas variables, podemos escribir un código para las operaciones de subconfiguración y JOIN según lo necesitemos:

  1. Si MATH y PHYS tienen valor 1, creará el primer conjunto de datos de salida y se llamará INNER JOIN.
  2. Si MATH tiene 1, creará un segundo conjunto de datos de salida y se llamará LEFT JOIN.
  3. Si PHYS tiene 1, creará un tercer conjunto de datos de salida y se llamará como RIGHT JOIN
  4. Si MATH y PHYS tienen 1, funcionará como FULL JOIN, también se ha resuelto en el escenario-1.

joins-5314579

sas_join_in_option-5975893

Relación de UNO a MUCHOS

Escenario – 3 Aquí tenemos dos conjuntos de datos, Estudiante y Examen y queremos crear un conjunto de datos de salida Marcas.

sas_one_to_many-5802190

En la parte superior de los conjuntos de datos de entrada, hay una relación de uno a varios entre el alumno y el examen. Ahora, si desea crear marcas de conjunto de datos de salida con observación individual para cada examen de los estudiantes, estas pertenecen al conjunto de datos de ESTUDIANTE, es decir, Unión a la izquierda.

Solución usando Pasos de datos: –

sas_left_join-3909637

De manera similar, podemos realizar operaciones para combinación interna, derecha y completa para una relación de uno a muchos utilizando el operador IN.

Relación de MUCHOS a MUCHOS

Escenario 4: Cree conjuntos de datos de salida que tengan todas las combinaciones basadas en un campo común. También puede ver que ambos conjuntos de datos de entrada tienen una relación de varios a varios.

sas_many_many-7856638

Los pasos de datos no realizan una relación de MUCHOS a MUCHOS, porque no proporcionan salida como producto cartesiano. Cuando fusionamos la tabla A y la tabla B usando pasos de datos, la salida es similar a la siguiente instantánea.

sas_many_to_many_merge-7118706Anteriormente hemos visto, ¿cómo podemos usar los pasos de datos para fusionar dos o más conjuntos de datos que tengan alguna de las relaciones, excepto MUCHOS a MUCHOS? Ahora veremos los métodos PROC SQL para tener una solución para requisitos similares.

PROC SQL

Para comprender la metodología de unión en SQL, primero debemos comprender el producto cartesiano. El producto cartesiano es una consulta que tiene varias tablas en la cláusula from y produce todas las combinaciones posibles de filas de las tablas de entrada. Si tenemos dos tablas con 2 y 4 registros respectivamente, usando el producto cartesiano, tenemos una tabla con 2 X 4 = 8 registros.

cartesian_product-9644155

Las uniones SQL funcionan para cada una de las relaciones entre conjuntos de datos (uno a uno, uno a muchos y muchos a muchos). Veamos cómo funciona con tipos de combinaciones.

Sintaxis:-

Seleccione Columna-1, Columna-2,… Columna-n de la tabla1 UNIÓN INTERIOR / IZQUIERDA / DERECHA / COMPLETA tcapaz2 SOBRE Join-condition ;

Nota:-

  1. Las tablas pueden o no estar ordenadas por variables comunes.
  2. El nombre de las variables comunes puede no ser similar, pero debe tener una longitud y un tipo similares.
  3. Funciona con un máximo de dos mesas.

Resolvamos los requisitos anteriores usando PROC SQL.

Escenario 1 :- Este fue un ejemplo de FULL Join, donde se requerían todos los Student_ID en el conjunto de datos de salida con las respectivas marcas MATH y PHYSICS.

sql_full_join-2216542

Arriba en el conjunto de datos de salida, puede ver que Student_ID falta para aquellos estudiantes que aparecieron solo para el examen de Física. Para solucionarlo usaremos una función COALESCE. Devuelve el valor del primer argumento que no falta de las variables dadas.

Sintaxis:-

COALESCE (argumento-1, argumento-2,… ..argumento-n)

Modifiquemos el código anterior: –
sql_coalesce-3846817

Escenario 2: – Este fue un ejemplo de INNER, Left y Right Join. Aquí estamos resolviendo para Inner Join.sql_inner_join-8622220 Del mismo modo, podemos hacer para la unión izquierda y derecha.

Escenario -3 Este fue un problema de unión a la izquierda para una relación de UNO a MUCHOS.

sql_one_to_many-2747392

Escenario -4 Este fue un problema de la relación de Muchos a MUCHOS. Ya hemos comentado que SQL puede producir un producto cartesiano que contiene todas las combinaciones de registros entre dos tablas.

sql_many_to_many-8134147

Arriba hemos visto Proc SQL para unir / fusionar conjuntos de datos.

Nota final: –

En esta serie de artículos sobre la combinación de conjuntos de datos en SAS, analizamos varios métodos para combinar conjuntos de datos como agregar, concatenar, intercalar, fusionar. Particularmente en este artículo, discutimos que dependiendo de la relación entre conjuntos de datos, varios tipos de uniones y cómo podemos resolverlo en función de diferentes escenarios. Hemos utilizado dos métodos (Data Steps y PROC SQL) para lograr resultados. Veremos la eficiencia de estos métodos en uno de los artículos futuros.

¿Te ha resultado útil esta serie? Hemos simplificado un tema complejo como la combinación de conjuntos de datos y hemos intentado presentarlo de manera comprensible. Si necesita más ayuda con la combinación de conjuntos de datos, no dude en hacer sus preguntas a través de los comentarios a continuación.

PD ¿Te has unido? Analítica Vidhya Discutir ¿todavía? Si no es así, se está perdiendo una gran cantidad de debates sobre ciencia de datos. Estas son algunas de las discusiones que tienen lugar en SAS:

1. Seleccionar variables y transferirlas a un nuevo conjunto de datos en SAS

2. Importar los primeros 20 registros de Excel a SAS

3. Donde la declaración no funciona en SAS

Si le gusta lo que acaba de leer y desea continuar su aprendizaje analítico, suscríbete a nuestros correos electrónicos, Síguenos en Twitter o como nuestro Facebook página.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.