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!
libname mysas "c:\Users\demo";
data cars;
set sashelp.cars;
keep make mpg MSRP;
Mpg=(MPG_City*.45)+(MPG_Highway*.55)/2;
run;
proc print data=cars(obs=10); run;
1
LIBNAME mysas "c:\Users\demo";
2
DATA cars;
3
SET sashelp.cars;
4
keep make mpg MSRP;
5
Mpg=(MPG_City*.45)+(MPG_Highway*.55)/2;
6
RUN;
7
PROC PRINTDATA=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!
data class;
set sashelp.class;
where age>12 and height>=67;
run;
proc print data=class; run;
1
DATA class;
2
SET sashelp.class;
3
where age>12 and height>=67;
4
RUN;
5
PROC PRINTDATA=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!
data quakes;
set sashelp.quakes(where=(Magnitude>6.0));
keep Depth Type Magnitude;
run;
proc print data=quakes; run;
data quakes2;
set quakes(firstobs=5);
run;
proc print data=quakes2; run;
1
DATA quakes;
2
SET sashelp.quakes(where=(Magnitude>6.0));
3
keep Depth Type Magnitude;
4
RUN;
5
PROC PRINTDATA=quakes; RUN;
6
7
DATA quakes2;
8
SET quakes(firstobs=5);
9
RUN;
10
PROC PRINTDATA=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!
data quakes;
set sashelp.quakes(where=(Magnitude>6.0));
keep Depth Type Magnitude;
run;
proc print data=quakes; run;
data quakes2;
set quakes(firstobs=2 obs=4);
run;
proc print data=quakes2; run;
1
DATA quakes;
2
SET sashelp.quakes(where=(Magnitude>6.0));
3
keep Depth Type Magnitude;
4
RUN;
5
PROC PRINTDATA=quakes; RUN;
6
7
DATA quakes2;
8
SET quakes(firstobs=2 obs=4);
9
RUN;
10
PROC PRINTDATA=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!
proc print data=sashelp.comet(obs=5);
title "Sashelp.Comet Data Set";
run;
data comet;
num=3;
set sashelp.comet point=num;
call symput('num',num);
output;
stop;
run;
proc print data=comet;
title "Row &num from Sashelp.Comet Data Set";
run;
1
PROC PRINTDATA=sashelp.comet(obs=5);
2
title "Sashelp.Comet Data Set";
3
4
5
RUN;
6
7
DATA comet;
8
num=3;
9
SET sashelp.comet point=num;
10
call symput('num',num);
11
OUTPUT;
12
stop;
13
RUN;
14
15
PROC PRINTDATA=comet;
16
title "Row &num from Sashelp.Comet Data Set";
17
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.