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
Detaillierte funktionale Analyse zur Verwendung der KEEP-Anweisung, um spezifische Variablen zu behalten, der WHERE-Anweisung, um Beobachtungen nach definierten Kriterien zu filtern, und der Optionen FIRSTOBS=, OBS= und POINT=, um den Start, das Ende oder den direkten Zugriff auf spezifische Beobachtungen in einem Datensatz zu steuern.
Datenanalyse

Type : CREATION_INTERNE


Die Beispiele verwenden SASHELP-Datensätze (sashelp.cars, sashelp.class, sashelp.quakes, sashelp.comet) oder interne Datenerstellungen, wodurch die Beispiele eigenständig sind.

1 Codeblock
DATA STEP / PROC PRINT
Erklärung :
Dieses Beispiel verwendet die KEEP-Anweisung, um anzugeben, dass nur die Variablen 'Make', 'Mpg' und 'MSRP' in den Ausgabedatensatz 'cars' aufgenommen werden sollen. Eine neue Variable 'Mpg' wird als gewichteter Durchschnitt von 'MPG_City' und 'MPG_Highway' berechnet. Der Datensatz 'mysas.cars' wird anschließend gedruckt, begrenzt auf die ersten 10 Beobachtungen.
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 / PROC PRINT
Erklärung :
Dieses Beispiel verwendet die WHERE-Anweisung, um Beobachtungen aus dem Datensatz 'sashelp.class' auszuwählen, bei denen der Wert von 'age' größer als 12 und der Wert von 'height' größer oder gleich 67 ist. Nur Beobachtungen, die diese Kriterien erfüllen, werden gelesen und in den Datensatz 'class' geschrieben, wodurch die Programmeffizienz verbessert wird. Eine alternative Option WHERE= kann direkt in der SET-Datensatzoption verwendet werden.
Kopiert!
1DATA class;
2 SET sashelp.class;
3 where age>12 and height>=67;
4RUN;
5PROC PRINT DATA=class; RUN;
3 Codeblock
DATA STEP / PROC PRINT
Erklärung :
Dieses Beispiel erstellt zunächst eine Untermenge des Datensatzes 'sashelp.quakes', bei der die 'Magnitude' größer als 6,0 ist. Anschließend wird die Option FIRSTOBS=5 in der SET-Anweisung verwendet, um anzuzeigen, dass die Verarbeitung und das Schreiben in den neuen Datensatz 'quakes2' ab der fünften Beobachtung des Datensatzes 'quakes' beginnen sollen. Die restlichen Beobachtungen des Eingabedatensatzes sind enthalten.
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 / PROC PRINT
Erklärung :
Dieses Beispiel veranschaulicht die kombinierte Verwendung der Optionen FIRSTOBS= und OBS=, um einen spezifischen Beobachtungsbereich zu lesen. Nach der Erstellung einer Untermenge 'quakes' liest der zweite DATA-Schritt den Datensatz 'quakes' ab der zweiten Beobachtung (FIRSTOBS=2) und endet nach der vierten Beobachtung (OBS=4). Dies erzeugt einen Ausgabedatensatz 'quakes2', der die Beobachtungen 2, 3 und 4 enthält.
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 / PROC PRINT
Erklärung :
Dieses Beispiel verwendet die Option POINT= in der SET-Anweisung, um direkt auf eine spezifische Beobachtung (die dritte) des Datensatzes 'sashelp.comet' zuzugreifen. Eine temporäre Variable 'num' wird auf 3 gesetzt, und POINT=num weist SAS an, auf diese Beobachtung zuzugreifen. Die OUTPUT-Anweisung schreibt die Beobachtung, und STOP wird verwendet, um die kontinuierliche Verarbeitung des DATA-Schritts zu verhindern, da POINT= das Dateiende nicht erkennt. Ein TITLE wird dynamisch generiert.
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