Die MERGE-Anweisung führt, wenn sie ohne BY-Anweisung verwendet wird, eine Eins-zu-eins-Zusammenführung durch, indem sie Beobachtungen implizit anhand der Zeilennummer abgleicht und Variablenwerte ignoriert. Wenn die Eingangsdatensätze identische Spaltennamen haben, überschreiben die Werte der gemeinsamen Variablen des zuletzt in der MERGE-Anweisung angegebenen Datensatzes die Werte der zuvor angegebenen Datensätze. Nicht geteilte Spalten werden als neue Spalten hinzugefügt. Der Ausgabedatensatz enthält alle Beobachtungen aller Eingangsdatensätze, unabhängig von ihrer ursprünglichen Beobachtungsanzahl. Die Systemoption MERGENOBY kann verwendet werden, um die Protokollierung von Nachrichten während einer Eins-zu-eins-Zusammenführung zu steuern.
Datenanalyse
Type : CREATION_INTERNE
Die Beispiele verwenden generierte Daten (Datalines), um die Autonomie des Codes zu gewährleisten.
1 Codeblock
DATA STEP / PROC PRINT Data
Erklärung : Dieses Beispiel veranschaulicht eine Eins-zu-eins-Zusammenführung von zwei Datensätzen, 'animal' und 'plantG', die eine gleiche Anzahl von Beobachtungen haben. Die MERGE-Anweisung wird ohne BY-Anweisung verwendet. Die Werte der Variablen 'common' in 'plantG' (der zuletzt angegebene Datensatz) überschreiben die Werte von 'animal' bei der sechsten Beobachtung, wo sie sich unterscheiden. Nicht gemeinsame Variablen werden hinzugefügt, und alle Beobachtungen sind im Ergebnis enthalten.
Kopiert!
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
DATA plantG;
12
INPUT common $ plant $;
13
DATALINES;
14
a Apple
15
b Banana
16
c Coconut
17
d Dewberry
18
e Eggplant
19
g Fig
20
;
21
DATA merged;
22
MERGE animal plantG;
23
RUN;
24
25
PROC PRINTDATA=merged; RUN;
2 Codeblock
DATA STEP / PROC PRINT Data
Erklärung : Dieses Szenario zeigt eine Eins-zu-eins-Zusammenführung zwischen 'animal' (6 Beobachtungen) und 'plantMissing' (3 Beobachtungen). Die MERGE-Anweisung ohne BY-Anweisung verarbeitet alle Einträge jedes Datensatzes, indem sie sie zeilenweise kombiniert. Fehlende Beobachtungen im kürzeren Datensatz ('plantMissing') führen zu fehlenden Werten in den entsprechenden Spalten des resultierenden Datensatzes, wo es keine implizite Übereinstimmung gibt, da die Zusammenführung fortgesetzt wird, bis alle Beobachtungen aller Datensätze verarbeitet sind. Wenn die 'SET'-Anweisung verwendet worden wäre, hätte das Programm nach dem Lesen des letzten Eintrags des kleineren Datensatzes angehalten.
Kopiert!
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; RUN;
3 Codeblock
DATA STEP / PROC PRINT Data
Erklärung : Dieses Beispiel veranschaulicht die potenziell unerwünschten Ergebnisse einer Eins-zu-eins-Zusammenführung ohne BY-Anweisung, wenn die Datensätze ('animalDupes', 'plantDupes') duplizierte Werte für die Variable 'common' enthalten. Eins-zu-eins-Zusammenführungen sind für Daten mit einer Eins-zu-eins-Beziehung konzipiert. In diesem Szenario (Eins-zu-viele- oder Viele-zu-eins-Beziehungen) erfolgt die Zusammenführung zeilenweise, wobei die Werte der gemeinsamen Variablen überschrieben werden und dies zu Informationsverlust oder einer falschen Kombination von Beobachtungen führen kann.
Kopiert!
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; RUN;
4 Codeblock
DATA STEP / PROC PRINT Data
Erklärung : Dieses Beispiel demonstriert die unerwünschten Ergebnisse einer Eins-zu-eins-Zusammenführung ohne BY-Anweisung, wenn die Datensätze ('animalMissing', 'plantMissing2') unterschiedliche Werte für ihre gemeinsame Variable 'common' haben. Die Zusammenführung erfolgt zeilenweise, und die Werte von 'plantMissing2' überschreiben die von 'animalMissing' für die Variable 'common'. Ohne eine explizite Übereinstimmung der Werte über eine BY-Anweisung kann die Datenkombination falsch sein und die erwarteten Beziehungen zwischen den Beobachtungen nicht widerspiegeln.
Kopiert!
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
DATA plantMissing2;
10
INPUT common $ plant $;
11
DATALINES;
12
a Apple
13
b Banana
14
c Coconut
15
e Eggplant
16
f Fig
17
;
18
DATA merged;
19
MERGE animalMissing plantMissing2;
20
RUN;
21
PROC PRINTDATA=merged; RUN;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.