Das Skript beginnt mit der Erstellung von zwei temporären Datensätzen, 'empsau' (Mitarbeiter) und 'phonec' (Telefone), über DATA STEP-Blöcke, die DATALINES verwenden. Anschließend werden mehrere DATA STEP-Blöcke ausgeführt, um Fusionsszenarien zu demonstrieren: eine vollständige Fusion (entspricht einem Full Outer Join), eine Fusion, um nur die übereinstimmenden Datensätze zu erhalten (entspricht einem Inner Join), und schließlich Fusionen, um Datensätze zu isolieren, die nur im ersten Datensatz, nur im zweiten oder in keinem der beiden vorhanden sind. Jede Fusionsoperation wird von einer PROC PRINT gefolgt, um das Ergebnis anzuzeigen.
Datenanalyse
Type : CREATION_INTERNE
Die Daten 'empsau' und 'phonec' werden direkt im Skript über DATA STEP-Blöcke und die DATALINES-Anweisung erstellt. Sie werden dann innerhalb desselben Skripts verwendet und transformiert.
1 Codeblock
DATA STEP Data
Erklärung : Dieser DATA STEP-Block erstellt den temporären Datensatz 'empsau' mit Informationen zu den Mitarbeitern (Vorname, Geschlecht, Mitarbeiter-ID). Die Daten werden direkt im Skript über die DATALINES-Anweisung bereitgestellt.
Kopiert!
data empsau;
input First $ Gender $ EmpID;
datalines;
Togar M 121150
Kylie F 121151
Birin M 121152
;
1
DATA empsau;
2
INPUT First $ Gender $ EmpID;
3
DATALINES;
4
Togar M 121150
5
Kylie F 121151
6
Birin M 121152
7
;
2 Codeblock
DATA STEP Data
Erklärung : Dieser DATA STEP-Block erstellt den temporären Datensatz 'phonec' mit Telefonnummern, die den Mitarbeiter-IDs zugeordnet sind. Die Daten werden ebenfalls direkt im Skript über DATALINES integriert.
Erklärung : Dieser DATA STEP-Block führt eine vollständige Fusion (Full Outer Join) der Datensätze 'empsau' und 'phonec' basierend auf der gemeinsamen Variablen 'EmpID' durch. Die IN=-Optionen (Emps, Cell) erstellen temporäre boolesche Variablen (_Emps und _Cell), die angeben, ob ein Datensatz aus 'empsau' oder 'phonec' stammt. PROC PRINT zeigt alle zusammengeführten Datensätze an, einschließlich derer, die nur in einem der beiden Datensätze vorhanden sind.
Kopiert!
data empsauc;
merge empsau(in=Emps)
phonec(in=Cell);
by EmpID;
run;
proc print data=empsauc;
run;
1
DATA empsauc;
2
MERGE empsau(in=Emps)
3
phonec(in=Cell);
4
BY EmpID;
5
RUN;
6
7
PROC PRINTDATA=empsauc;
8
RUN;
4 Codeblock
DATA STEP
Erklärung : Dieser DATA STEP-Block führt eine innere Verknüpfung (Inner Join) durch. Nach der Fusion filtert die Bedingung 'if Emps=1 and Cell=1;' die Datensätze, um nur diejenigen zu behalten, deren Mitarbeiter-ID sowohl in 'empsau' als auch in 'phonec' vorhanden ist. PROC PRINT zeigt nur die Übereinstimmungen an.
Kopiert!
data empsauc;
merge empsau(in=Emps)
phonec(in=Cell);
by EmpID;
if Emps=1 and Cell=1;
run;
proc print data=empsauc;
run;
1
DATA empsauc;
2
MERGE empsau(in=Emps)
3
phonec(in=Cell);
4
BY EmpID;
5
IF Emps=1 and Cell=1;
6
RUN;
7
8
PROC PRINTDATA=empsauc;
9
RUN;
5 Codeblock
DATA STEP
Erklärung : Dieser DATA STEP-Block identifiziert Datensätze, die in 'empsau' (Emps=1) vorhanden sind, aber in 'phonec' (Cell=0) fehlen. Dies entspricht einem linken Anti-Join. PROC PRINT zeigt die Mitarbeiter ohne telefonische Übereinstimmung in 'phonec' an.
Kopiert!
data empsauc;
merge empsau(in=Emps)
phonec(in=Cell);
by EmpID;
if Emps=1 and Cell=0;
run;
proc print data=empsauc;
run;
1
DATA empsauc;
2
MERGE empsau(in=Emps)
3
phonec(in=Cell);
4
BY EmpID;
5
IF Emps=1 and Cell=0;
6
RUN;
7
8
PROC PRINTDATA=empsauc;
9
RUN;
6 Codeblock
DATA STEP
Erklärung : Dieser DATA STEP-Block identifiziert Datensätze, die in 'phonec' (Cell=1) vorhanden sind, aber in 'empsau' (Emps=0) fehlen. Dies entspricht einem rechten Anti-Join. PROC PRINT zeigt die Telefonnummern ohne Mitarbeiter-Übereinstimmung in 'empsau' an.
Kopiert!
data empsauc;
merge empsau(in=Emps)
phonec(in=Cell);
by EmpID;
if Emps=0 and Cell=1;
run;
proc print data=empsauc;
run;
1
DATA empsauc;
2
MERGE empsau(in=Emps)
3
phonec(in=Cell);
4
BY EmpID;
5
IF Emps=0 and Cell=1;
6
RUN;
7
8
PROC PRINTDATA=empsauc;
9
RUN;
7 Codeblock
DATA STEP
Erklärung : Dieser DATA STEP-Block wählt alle Datensätze aus, die nicht übereinstimmen. Die Bedingung 'if Emps=0 or Cell=0;' filtert Datensätze, die nur in 'empsau' oder nur in 'phonec' vorhanden sind. PROC PRINT zeigt die Datensätze an, die keine Übereinstimmung im anderen Datensatz finden.
Kopiert!
data empsauc;
merge empsau(in=Emps)
phonec(in=Cell);
by EmpID;
if Emps=0 or Cell=0;
run;
proc print data=empsauc;
run;
1
DATA empsauc;
2
MERGE empsau(in=Emps)
3
phonec(in=Cell);
4
BY EmpID;
5
IF Emps=0 or Cell=0;
6
RUN;
7
8
PROC PRINTDATA=empsauc;
9
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.