Das Skript beginnt mit der Definition von zwei temporären Datensätzen, 'company' und 'finance', unter Verwendung von 'datalines'-Blöcken für die direkte Dateneingabe. Der Datensatz 'company' enthält demografische Informationen über Mitarbeiter (Name, Alter, Geschlecht), während 'finance' finanzielle Details (Telefonnummer, Name, Gehalt) enthält. Jeder Datensatz wird mit PROC SORT nach 'Name' sortiert, was ein wesentlicher Vorbereitungsschritt für die Zusammenführung ist. Die sortierten Datensätze werden anschließend ausgegeben. Das Skript führt dann 'company' und 'finance' zu einem neuen Datensatz 'employeeinfo' zusammen, basierend auf der gemeinsamen Variablen 'Name'. Zusätzliche PROC PRINT-Prozeduren werden verwendet, um den zusammengeführten Datensatz anzuzeigen, sowie um die Verwendung der globalen Optionen 'firstobs' und 'obs', der 'WHERE'-Klausel für die Filterung und einen Versuch der Summenberechnung für eine kategoriale Variable (die als potenzieller Fehler vermerkt ist) zu demonstrieren. Schließlich werden PROC CONTENTS und PROC DATASETS verwendet, um die Metadaten der Datensätze, insbesondere 'company', zu überprüfen.
Datenanalyse
Type : CREATION_INTERNE
Die Daten für die Datensätze 'company' und 'finance' werden direkt im SAS-Skript über 'datalines'-Blöcke erstellt. Es werden keine externen Daten oder SASHELP-Bibliotheken als primäre Datenquelle für diese Datensätze verwendet.
1 Codeblock
DATA STEP Data
Erklärung : Dieser DATA STEP-Block erstellt den Datensatz 'company' unter Verwendung von Inline-Daten, die im 'datalines'-Block bereitgestellt werden. Er definiert die Variablen 'Name' (Zeichen), 'Age' (numerisch) und 'Gender' (Zeichen) mit ihren jeweiligen Spaltenpositionen. Dieser Datensatz enthält grundlegende Informationen über Mitarbeiter.
Kopiert!
data company;
input
Name $ 1-25
Age 27-28
Gender $ 30;
datalines;
Vincent, Martina 34 F
Phillipon, Marie-Odile 28 F
Gunter, Thomas 27 M
Harbinger, Nicholas 36 M
Benito, Gisela 32 F
Rudelich, Herbert 39 M
Sirignano, Emily 12 F
Morrison, Michael 32 M
;
1
DATA company;
2
INPUT
3
Name $ 1-25
4
Age 27-28
5
Gender $ 30;
6
DATALINES;
7
Vincent, Martina 34 F
8
Phillipon, Marie-Odile 28 F
9
Gunter, Thomas 27 M
10
Harbinger, Nicholas 36 M
11
Benito, Gisela 32 F
12
Rudelich, Herbert 39 M
13
Sirignano, Emily 12 F
14
Morrison, Michael 32 M
15
;
16
2 Codeblock
PROC SORT
Erklärung : Diese PROC SORT sortiert den Datensatz 'company' nach der Variablen 'Name'. Die Sortierung ist für spätere Operationen wie die Zusammenführung ('MERGE') unerlässlich, die in der Regel erfordern, dass die Eingabedatensätze nach den Zusammenführungsvariablen ('BY'-Variablen) sortiert sind.
Kopiert!
proc sort data=company;
by Name;
run;
1
PROC SORTDATA=company;
2
BY Name;
3
RUN;
4
3 Codeblock
PROC PRINT
Erklärung : Diese PROC PRINT zeigt den Inhalt des Datensatzes 'company' im Ausgabefenster an. Der 'title' gibt den Titel des gedruckten Berichts an und macht ihn so aussagekräftiger.
Kopiert!
proc print data=company;
title 'Company';
run;
1
PROC PRINTDATA=company;
2
title 'Company';
3
RUN;
4
4 Codeblock
DATA STEP Data
Erklärung : Dieser zweite DATA STEP-Block erstellt den Datensatz 'finance', ähnlich dem 'company'-Block, unter Verwendung von 'datalines'. Er erfasst die Variablen 'Phone_number' (Zeichen), 'Name' (Zeichen) und 'Salary' (numerisch), die finanzielle Informationen für bestimmte Mitarbeiter enthalten.
Kopiert!
data finance;
input Phone_number $ 1-11
Name $ 13-40
Salary;
datalines;
074-53-9892 Vincent, Martina 35000
776-84-5391 Phillipon, Marie-Odile 29750
929-75-0218 Gunter, Thomas 27500
446-93-2122 Harbinger, Nicholas 33900
228-88-9649 Benito, Gisela 28000
029-46-9261 Rudelich, Herbert 35000
442-21-8075 Sirignano, Emily 5000
;
1
DATA finance;
2
INPUT Phone_number $ 1-11
3
Name $ 13-40
4
Salary;
5
DATALINES;
6
074-53-9892 Vincent, Martina 35000
7
776-84-5391 Phillipon, Marie-Odile 29750
8
929-75-0218 Gunter, Thomas 27500
9
446-93-2122 Harbinger, Nicholas 33900
10
228-88-9649 Benito, Gisela 28000
11
029-46-9261 Rudelich, Herbert 35000
12
442-21-8075 Sirignano, Emily 5000
13
;
14
5 Codeblock
PROC SORT
Erklärung : Ähnlich der Sortierung des Datensatzes 'company' sortiert diese PROC SORT den Datensatz 'finance' nach der Variablen 'Name' zur Vorbereitung der Zusammenführungsoperation.
Kopiert!
proc sort data=finance;
by Name;
run;
1
PROC SORTDATA=finance;
2
BY Name;
3
RUN;
4
6 Codeblock
PROC PRINT
Erklärung : Diese PROC PRINT zeigt den Inhalt des Datensatzes 'finance' mit dem Titel 'Employee Information' an und bietet so einen Überblick über die individuellen Finanzdaten.
Kopiert!
proc print data=finance;
title 'Employee Information';
run;
1
PROC PRINTDATA=finance;
2
title 'Employee Information';
3
RUN;
4
7 Codeblock
DATA STEP Data
Erklärung : Dieser DATA STEP führt die Datensätze 'company' und 'finance' zu einem neuen Datensatz namens 'employeeinfo' zusammen. Die Klausel 'BY name;' gibt an, dass die Zusammenführung durch Abgleichen der Beobachtungen anhand der Variablen 'Name' erfolgen soll. Wenn ein Name in einem Datensatz, aber nicht im anderen vorkommt, sind die Werte der nicht übereinstimmenden Variablen fehlend. Die Eingabedatensätze müssen nach der 'BY'-Variablen sortiert sein.
Kopiert!
data employeeinfo;
merge company finance;
by name;
run;
1
DATA employeeinfo;
2
MERGE company finance;
3
BY name;
4
RUN;
5
8 Codeblock
PROC PRINT
Erklärung : Diese PROC PRINT zeigt den Datensatz 'employeeinfo' an, der das Ergebnis der Zusammenführung ist. Die Verwendung von 'title' und 'title2' ermöglicht die Definition von zwei Titelzeilen für die Berichtsausgabe.
Kopiert!
proc print data=employeeinfo;
title 'Laxmi is Cute!';
title2 'very cute';
run;
1
PROC PRINTDATA=employeeinfo;
2
title 'Laxmi is Cute!';
3
title2 'very cute';
4
RUN;
5
9 Codeblock
PROC CONTENTS
Erklärung : Die PROC CONTENTS liefert detaillierte Metadaten über den Datensatz 'company'. Dies umfasst Informationen wie die Anzahl der Beobachtungen, die Anzahl der Variablen, die Variablennamen, deren Typen (numerisch oder Zeichen), deren Längen und deren Formate.
Kopiert!
proc contents data = company;
run;
1
PROC CONTENTSDATA = company;
2
RUN;
3
10 Codeblock
PROC DATASETS
Erklärung : Die PROC DATASETS ist eine Bibliotheksverwaltungsprozedur, die verschiedene Operationen an Datensätzen und Katalogen ermöglicht. Hier wird die Anweisung 'contents data= company;' verwendet, um dieselben Metadaten wie PROC CONTENTS für den Datensatz 'company' zu erhalten. Sie wird oft in einem Kontext verwendet, in dem mehrere Datensatzverwaltungsoperationen innerhalb einer einzigen Ausführung von PROC DATASETS durchgeführt werden.
Kopiert!
proc datasets;
contents data= company;
run;
1
PROC DATASETS;
2
contents DATA= company;
3
RUN;
4
11 Codeblock
OPTIONS et PROC PRINT
Erklärung : Dieser Block demonstriert die Verwendung der globalen Optionen 'firstobs' und 'obs'. 'options firstobs=3;' weist SAS an, die Daten ab der dritten Beobachtung zu lesen, und 'obs=9;' weist an, nach der neunten Beobachtung anzuhalten. Folglich zeigt diese PROC PRINT die Beobachtungen 3 bis 9 (einschließlich) des Datensatzes 'employeeinfo' an. Diese Optionen wirken sich auf alle nachfolgenden Datenschritte und Prozeduren aus, bis sie zurückgesetzt oder geändert werden.
Kopiert!
options firstobs= 3 obs=9;
proc print data = employeeinfo;
run;
1
options firstobs= 3 obs=9;
2
PROC PRINTDATA = employeeinfo;
3
RUN;
4
12 Codeblock
PROC PRINT
Erklärung : Diese PROC PRINT verwendet eine 'WHERE'-Klausel, um Beobachtungen aus dem Datensatz 'employeeinfo' zu filtern. Nur die Beobachtungen, bei denen die Variable 'Name' die Teilzeichenfolge 'Vi' enthält (standardmäßig bei SAS für 'contains' nicht zwischen Groß- und Kleinschreibung unterschieden, es sei denn, die Option wird geändert), werden angezeigt. Dies ermöglicht das Anzielen spezifischer Daten-Subsets zur Anzeige.
Kopiert!
proc print data = employeeinfo;
where Name contains 'Vi';
run;
1
PROC PRINTDATA = employeeinfo;
2
where Name contains 'Vi';
3
RUN;
4
13 Codeblock
PROC PRINT
Erklärung : Diese PROC PRINT versucht, einen Bericht mit Zwischensummen zu erstellen. Die Anweisung 'by Name;' gruppiert die Beobachtungen nach Namen, und 'sum Gender;' soll Summen für die Variable 'Gender' berechnen. 'Gender' ist jedoch eine Zeichenvariable, und die 'SUM'-Anweisung in PROC PRINT ist für numerische Variablen konzipiert. Dies führt zu einer Warnung oder einem Fehler im SAS-Log, und die Summe für 'Gender' wird nicht angezeigt. Die Anweisung 'ID Gender;' bedeutet, dass die Variable 'Gender' als Identifikationsvariable im Bericht verwendet wird, wird aber in diesem Kontext typischerweise nicht für eine sinnvolle Gruppierung mit 'BY' und 'SUM' auf einer kategorialen Variablen verwendet.
Kopiert!
proc print data = employeeinfo;
title 'Sub total';
sum Gender;
by Name;
ID Gender;
run;
1
PROC PRINTDATA = employeeinfo;
2
title 'Sub total';
3
sum Gender;
4
BY Name;
5
ID Gender;
6
RUN;
7
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.