Veröffentlicht am :
Datenmanipulation CREATION_INTERNE

Beispiele: Variablen und Beobachtungen in Datensätzen steuern

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Beispiele veranschaulichen die Verwendung der KEEP- und WHERE-Anweisungen sowie der Datensatzoptionen FIRSTOBS=, OBS= und POINT= zum Filtern und Auswählen spezifischer Variablen und Beobachtungen in Datensätzen. Diese Techniken verbessern die Effizienz von SAS©-Programmen, indem sie die Menge der gelesenen und verarbeiteten Daten reduzieren.
Datenanalyse

Type : CREATION_INTERNE


Die Beispiele verwenden vorhandene SASHELP-Datensätze (Sashelp.Cars, Sashelp.Class, Sashelp.Comet, Sashelp.Quakes) oder einfache Datensatzerstellungen, die darauf basieren.

1 Codeblock
DATA STEP
Erklärung :
Dieses Beispiel verwendet die KEEP-Anweisung, um zu steuern, welche Variablen in den Ausgabedatensatz geschrieben werden. Die LIBNAME-Anweisung gibt den Speicherort für das Schreiben des Ausgabedatensatzes an und verknüpft ihn mit dem Namen mysas. Die SET-Anweisung liest den Eingabedatensatz Sashelp.Cars, und die DATA-Anweisung schreibt die Ergebnisse in den Ausgabedatensatz mysas.cars. Dieses Beispiel verwendet die KEEP-Anweisung, um nur die Variablen Make, Mpg und MSRP in den Ausgabedatensatz aufzunehmen. SAS liest alle Variablen aus dem Datensatz Sashelp.Cars in den Speicher und entfernt dann unerwünschte Variablen, wenn der Ausgabedatensatz erstellt wird. Die Variablen MPG_City und MPG_Highway werden von der DATA-Schritt in den Speicher gelesen und zur Berechnung des gewichteten Mittelwerts des Kraftstoffverbrauchs verwendet, sind aber nicht in der Ausgabe enthalten.
Kopiert!
1LIBNAME mysas "c:\Users\demo";
2DATA cars;
3 SET sashelp.cars;
4 keep make mpg MSRP;
5 Mpg=(MPG_City*.45)+(MPG_Highway*.55)/2;
6RUN;
7PROC PRINT DATA=cars(obs=10); RUN;
2 Codeblock
DATA STEP
Erklärung :
Dieses Beispiel verwendet die WHERE-Anweisung, um Beobachtungen basierend auf den Werten der Variablen age und height auszuwählen. Wenn der DATA-Schritt dieses Programm ausführt, liest er nicht jede Zeile des Eingabedatensatzes. Die Verwendung der WHERE-Anweisung kann die Effizienz Ihres SAS-Programms verbessern, wenn der DATA-Schritt weniger Beobachtungen lesen muss. Sie können auch die Datensatzoption WHERE= verwenden, um Beobachtungen bedingt im Eingabe- oder Ausgabedatensatz auszuwählen.
Kopiert!
1DATA class;
2 SET sashelp.class;
3 where age>12 and height>=67;
4RUN;
5PROC PRINT DATA=class; RUN;
3 Codeblock
DATA STEP Data
Erklärung :
In diesem Beispiel greift der DATA-Schritt direkt auf eine bestimmte Beobachtung im Eingabedatensatz zu und schreibt die Ausgabe in einen neuen Datensatz, beginnend mit dieser angegebenen Beobachtung. Die Datensatzoption FIRSTOBS= gibt an, dass die Beobachtungen ab der Beobachtungsnummer 5 des Eingabedatensatzes Sashelp.quakes in den Ausgabedatensatz quakes2 geschrieben werden. Um einen Eingabedatensatz für dieses Beispiel zu erstellen, wird der folgende DATA-Schritt verwendet, um eine Teilmenge des Datensatzes Sashelp.Quakes zu erstellen. Der DATA-Schritt erstellt eine Teilmenge, indem er bedingt Beobachtungen auswählt, bei denen die Werte der Variablen Magnitude größer als 6.0 sind. Im folgenden DATA-Schritt wird die Datensatzoption FIRSTOBS= in der SET-Anweisung angegeben, um einen neuen Ausgabedatensatz zu erstellen, der mit der Beobachtung 5 des Eingabedatensatzes beginnt. Der Ausgabedatensatz enthält alle verbleibenden Beobachtungen des Eingabedatensatzes.
Kopiert!
1DATA quakes;
2 SET sashelp.quakes(where=(Magnitude>6.0));
3 keep Depth Type Magnitude;
4RUN;
5PROC PRINT DATA=quakes; RUN;
6 
7DATA quakes2;
8 SET quakes(firstobs=5);
9RUN;
10PROC PRINT DATA=quakes2; RUN;
4 Codeblock
DATA STEP Data
Erklärung :
In diesem Beispiel greift der DATA-Schritt auf einen Bereich von Beobachtungen in einem Datensatz zu, indem er die Datensatzoptionen FIRSTOBS= und OBS= zusammen verwendet. Die Datensatzoption FIRSTOBS= gibt an, dass die Beobachtungen ab der Beobachtungsnummer 2 des Eingabedatensatzes Sashelp.quakes in den Ausgabedatensatz quakes2 geschrieben werden. Die Datensatzoption OBS= weist SAS an, die Verarbeitung von Beobachtungen einzustellen, nachdem eine angegebene Anzahl von Beobachtungen gelesen wurde. SAS verwendet die folgende Formel, um die Anzahl der zu lesenden Beobachtungen zu bestimmen, wenn die Datensatzoptionen OBS= und FIRSTOBS= gemeinsam verwendet werden: (obs - firstobs) + 1 = Anzahl der Zeilen. Um den Eingabedatensatz für dieses Beispiel zu erstellen, erstellt der erste DATA-Schritt eine Teilmenge des Datensatzes Sashelp.Quakes. Der zweite DATA-Schritt erstellt einen Bereich von Beobachtungen.
Kopiert!
1DATA quakes;
2 SET sashelp.quakes(where=(Magnitude>6.0));
3 keep Depth Type Magnitude;
4RUN;
5PROC PRINT DATA=quakes; RUN;
6 
7DATA quakes2;
8 SET quakes(firstobs=2 obs=4);
9RUN;
10PROC PRINT DATA=quakes2; RUN;
5 Codeblock
DATA STEP
Erklärung :
In diesem Beispiel greift der DATA-Schritt direkt auf die dritte Zeile des Datensatzes Sashelp.Comet zu. Eine temporäre numerische Variable, num, wird erstellt, um den Wert der Beobachtung zu speichern, auf die direkt aus dem Datensatz Sashelp.Comet zugegriffen werden soll. Die Zuweisungsanweisung erstellt die Variable und weist ihr den Wert 3 zu, der die dritte Beobachtung des Datensatzes Sashelp.Comet darstellt. Anschließend wird die Option POINT= in der SET-Anweisung angegeben und auf die temporäre Variable num gesetzt. Die OUTPUT-Anweisung schreibt die aktuelle Beobachtung in den Ausgabedatensatz Comet. Die STOP-Anweisung wird verwendet, um eine kontinuierliche Verarbeitung des DATA-Schritts zu vermeiden. Die Routine CALL SYMPUT weist die Zeilennummer einer Makrovariablen zu, die in der TITLE-Anweisung verwendet werden kann, um die Zeile anzugeben, auf die zugegriffen wird. Die erste PRINT-Prozedur unten wird verwendet, um die ersten Zeilen des Eingabedatensatzes anzuzeigen, in dem die dritte Zeile direkt vom DATA-Schritt aufgerufen wird.
Kopiert!
1PROC PRINT DATA=sashelp.comet(obs=5);
2title "Sashelp.Comet Data Set";
3 
4 
5RUN;
6 
7DATA comet;
8 num=3;
9 SET sashelp.comet point=num;
10 call symput('num',num);
11 OUTPUT;
12 stop;
13RUN;
14 
15PROC PRINT DATA=comet;
16title "Row &num from Sashelp.Comet Data Set";
17RUN;
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.
Urheberrechtsinformationen : Copyright © SAS Institute Inc. All Rights Reserved