Publicado el :
Manipulación de datos CREATION_INTERNE

Ejemplos: Fusión de datos uno a uno

Este código también está disponible en: English Français
En espera de validación
El análisis funcional se centra en el comportamiento de la instrucción MERGE en ausencia de la instrucción BY. En este modo de fusión uno a uno, SAS© no compara los valores de las variables comunes, sino que asocia implícitamente las observaciones en función de su número de línea. Cuando los nombres de las columnas son idénticos en los conjuntos de datos de entrada, los valores de las variables comunes del último conjunto de datos especificado en la instrucción MERGE sobrescriben los de los conjuntos de datos anteriores. Las columnas no compartidas se añaden como nuevas columnas. La lectura de las observaciones se realiza secuencialmente desde cada conjunto de datos, y el conjunto de datos de salida contendrá todas las observaciones, ajustadas por las reglas de sobrescritura de las variables comunes. El documento advierte contra el uso de este método para relaciones de datos que no sean estrictamente uno a uno, ya que puede producir resultados imprevistos e incorrectos.
Análisis de datos

Type : CREATION_INTERNE


Los ejemplos utilizan datos generados (datalines) o SASHELP.

1 Bloque de código
DATA STEP Data
Explicación :
Este ejemplo fusiona dos conjuntos de datos, 'animal' y 'plantG', que tienen un número igual de observaciones y una variable común llamada 'common'. La instrucción MERGE se utiliza sin la instrucción BY, lo que significa que las observaciones se fusionan basándose en su posición (número de línea). El valor 'g' de la variable 'common' en 'plantG' reemplaza el valor 'f' de 'common' en 'animal' para la observación 6 del conjunto de datos de salida, demostrando que los valores del último conjunto de datos nombrado sobrescriben los anteriores para las variables comunes.
¡Copiado!
1DATA animal;
2 INPUT common $ animal $;
3 DATALINES;
4a Ant
5b Bird
6c Cat
7d Dog
8e Eagle
9f Frog
10;
11 
12DATA plantG;
13 INPUT common $ plant $;
14 DATALINES;
15a Apple
16b Banana
17c Coconut
18d Dewberry
19e Eggplant
20g Fig
21;
22 
23DATA merged;
24 MERGE animal plantG;
25RUN;
26 
27PROC PRINT DATA=merged;
28RUN;
2 Bloque de código
DATA STEP Data
Explicación :
Este ejemplo fusiona los conjuntos de datos 'animal' (6 observaciones) y 'plantMissing' (3 observaciones). Sin la instrucción BY, la fusión uno a uno asocia las observaciones por número de línea. El conjunto de datos 'merged' resultante tendrá 6 observaciones. Para las observaciones 4, 5 y 6, las variables de 'plantMissing' (plant, common) contendrán valores perdidos porque 'plantMissing' solo tiene 3 observaciones. Los valores de 'common' del último conjunto de datos ('plantMissing') sobrescriben los de 'animal' para las observaciones correspondientes.
¡Copiado!
1DATA animal;
2INPUT common $ animal $;
3DATALINES;
4a Ant
5b Bird
6c Cat
7d Dog
8e Eagle
9f Frog
10;
11 
12DATA plantMissing;
13INPUT common $ plant $;
14DATALINES;
15a Apple
16b Banana
17c Coconut
18;
19 
20DATA merged;
21 MERGE animal plantmissing;
22RUN;
23PROC PRINT DATA=merged;
24RUN;
3 Bloque de código
DATA STEP Data
Explicación :
Este ejemplo muestra la diferencia de comportamiento entre MERGE y SET al combinar conjuntos de datos de tamaños desiguales sin la instrucción BY. Con dos instrucciones SET consecutivas, el paso DATA deja de seleccionar observaciones para la salida después de leer la última observación del conjunto de datos con el número más pequeño de observaciones ('plantMissing' con 3 observaciones). El conjunto de datos resultante 'combine' solo tendrá 3 observaciones, donde las variables de 'animal' estarán presentes pero no combinadas por línea con 'plantMissing' más allá de la 3ª observación.
¡Copiado!
1DATA animal;
2INPUT common $ animal $;
3DATALINES;
4a Ant
5b Bird
6c Cat
7d Dog
8e Eagle
9f Frog
10;
11 
12DATA plantMissing;
13INPUT common $ plant $;
14DATALINES;
15a Apple
16b Banana
17c Coconut
18;
19 
20DATA combine;
21 SET animal;
22 SET plantMissing;
23RUN;
24PROC PRINT DATA=combine;
25RUN;
4 Bloque de código
DATA STEP Data
Explicación :
Este ejemplo ilustra los resultados indeseables de una fusión uno a uno (sin BY) cuando los conjuntos de datos contienen valores duplicados para las variables comunes. Dado que la fusión se basa en el número de línea y no en los valores de 'common', los duplicados de 'a' en 'animalDupes' y de 'c' en 'plantDupes' no se gestionan como cabría esperar. La segunda observación de 'animalDupes' (a Ape) se fusiona con la segunda de 'plantDupes' (b Banana), lo que no corresponde con los valores de la variable común. El resultado es un conjunto de datos donde el emparejamiento lógico de las observaciones se ve comprometido debido a las duplicaciones y la ausencia de la instrucción BY.
¡Copiado!
1DATA animalDupes;
2INPUT common $ animal $;
3DATALINES;
4a Ant
5a Ape
6b Bird
7c Cat
8d Dog
9e Eagle
10;
11 
12DATA plantDupes;
13INPUT common $ plant $;
14DATALINES;
15a Apple
16b Banana
17c Coconut
18c Celery
19d Dewberry
20e Eggplant
21;
22 
23DATA merged;
24 MERGE animalDupes plantDupes;
25RUN;
26PROC PRINT DATA=merged;
27RUN;
5 Bloque de código
DATA STEP Data
Explicación :
Este ejemplo demuestra los resultados indeseables de una fusión uno a uno (sin BY) cuando los conjuntos de datos de entrada ('animalMissing' y 'plantMissing2') tienen valores diferentes para la variable común ('common'). Dado que la fusión se realiza por número de línea, la observación 2 de 'animalMissing' (c Cat) se fusiona con la observación 2 de 'plantMissing2' (b Banana), y así sucesivamente. Esto lleva a un conjunto de datos donde los valores de la variable 'common' y de las otras variables no coinciden lógicamente, ya que el emparejamiento no se basa en la concordancia de los identificadores.
¡Copiado!
1DATA animalMissing;
2INPUT common $ animal $;
3DATALINES;
4a Ant
5c Cat
6d Dog
7e Eagle
8;
9 
10DATA plantMissing2;
11INPUT common $ plant $;
12DATALINES;
13a Apple
14b Banana
15c Coconut
16e Eggplant
17f Fig
18;
19 
20DATA merged;
21 MERGE animalMissing plantMissing2;
22RUN;
23PROC PRINT DATA=merged;
24RUN;
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 © SAS Institute Inc. All Rights Reserved