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!
data animal;
input common $ animal $;
datalines;
a Ant
b Bird
c Cat
d Dog
e Eagle
f Frog
;
data plantG;
input common $ plant $;
datalines;
a Apple
b Banana
c Coconut
d Dewberry
e Eggplant
g Fig
;
data merged;
merge animal plantG;
run;
proc print data=merged;
run;
1
DATA animal;
2
INPUT common $ animal $;
3
DATALINES;
4
a Ant
5
b Bird
6
c Cat
7
d Dog
8
e Eagle
9
f Frog
10
;
11
12
DATA plantG;
13
INPUT common $ plant $;
14
DATALINES;
15
a Apple
16
b Banana
17
c Coconut
18
d Dewberry
19
e Eggplant
20
g Fig
21
;
22
23
DATA merged;
24
MERGE animal plantG;
25
RUN;
26
27
PROC PRINTDATA=merged;
28
RUN;
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!
data animal;
input common $ animal $;
datalines;
a Ant
b Bird
c Cat
d Dog
e Eagle
f Frog
;
data plantMissing;
input common $ plant $;
datalines;
a Apple
b Banana
c Coconut
;
data merged;
merge animal plantmissing;
run;
proc print data=merged;
run;
1
DATA animal;
2
INPUT common $ animal $;
3
DATALINES;
4
a Ant
5
b Bird
6
c Cat
7
d Dog
8
e Eagle
9
f Frog
10
;
11
12
DATA plantMissing;
13
INPUT common $ plant $;
14
DATALINES;
15
a Apple
16
b Banana
17
c Coconut
18
;
19
20
DATA merged;
21
MERGE animal plantmissing;
22
RUN;
23
PROC PRINTDATA=merged;
24
RUN;
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!
data animal;
input common $ animal $;
datalines;
a Ant
b Bird
c Cat
d Dog
e Eagle
f Frog
;
data plantMissing;
input common $ plant $;
datalines;
a Apple
b Banana
c Coconut
;
data combine;
set animal;
set plantMissing;
run;
proc print data=combine;
run;
1
DATA animal;
2
INPUT common $ animal $;
3
DATALINES;
4
a Ant
5
b Bird
6
c Cat
7
d Dog
8
e Eagle
9
f Frog
10
;
11
12
DATA plantMissing;
13
INPUT common $ plant $;
14
DATALINES;
15
a Apple
16
b Banana
17
c Coconut
18
;
19
20
DATA combine;
21
SET animal;
22
SET plantMissing;
23
RUN;
24
PROC PRINTDATA=combine;
25
RUN;
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!
data animalDupes;
input common $ animal $;
datalines;
a Ant
a Ape
b Bird
c Cat
d Dog
e Eagle
;
data plantDupes;
input common $ plant $;
datalines;
a Apple
b Banana
c Coconut
c Celery
d Dewberry
e Eggplant
;
data merged;
merge animalDupes plantDupes;
run;
proc print data=merged;
run;
1
DATA animalDupes;
2
INPUT common $ animal $;
3
DATALINES;
4
a Ant
5
a Ape
6
b Bird
7
c Cat
8
d Dog
9
e Eagle
10
;
11
12
DATA plantDupes;
13
INPUT common $ plant $;
14
DATALINES;
15
a Apple
16
b Banana
17
c Coconut
18
c Celery
19
d Dewberry
20
e Eggplant
21
;
22
23
DATA merged;
24
MERGE animalDupes plantDupes;
25
RUN;
26
PROC PRINTDATA=merged;
27
RUN;
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!
data animalMissing;
input common $ animal $;
datalines;
a Ant
c Cat
d Dog
e Eagle
;
data plantMissing2;
input common $ plant $;
datalines;
a Apple
b Banana
c Coconut
e Eggplant
f Fig
;
data merged;
merge animalMissing plantMissing2;
run;
proc print data=merged;
run;
1
DATA animalMissing;
2
INPUT common $ animal $;
3
DATALINES;
4
a Ant
5
c Cat
6
d Dog
7
e Eagle
8
;
9
10
DATA plantMissing2;
11
INPUT common $ plant $;
12
DATALINES;
13
a Apple
14
b Banana
15
c Coconut
16
e Eggplant
17
f Fig
18
;
19
20
DATA merged;
21
MERGE animalMissing plantMissing2;
22
RUN;
23
PROC PRINTDATA=merged;
24
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.