Die Beispiele verwenden generierte Daten (Datalines) oder SASHELP.
1 Codeblock
DATA STEP / PROC SORT Data
Erklärung : Dieses Beispiel zeigt, wie SAS die automatischen Variablen FIRST.variable und LAST.variable verwendet, um den Anfang und das Ende von BY-Gruppen zu kennzeichnen. Die Variablen FIRST. und LAST. sind temporäre Variablen, die automatisch von SAS erstellt werden und den Anfang und das Ende jeder BY-Gruppe darstellen. Sie können die Variablen FIRST. und LAST. im DATA-Schritt referenzieren, aber sie sind nicht Teil des Ausgabedatensatzes. Die automatische Variable _N_ wird als Zähler für die Iterationen des DATA-Schritts verwendet und ist im Log sichtbar.
Kopiert!
data zip;
input State $ City $ ZipCode Street $20-29;
datalines;
FL Miami 33133 Rice St
FL Miami 33133 Thomas Ave
FL Miami 33133 Surrey Dr
FL Miami 33133 Trade Ave
FL Miami 33146 Nervia St
FL Miami 33146 Corsica St
FL Lakeland 33801 French Ave
FL Lakeland 33809 Egret Dr
AZ Tucson 85730 Domenic Ln
AZ Tucson 85730 Gleeson Pl
;
proc sort data=zip;
by State City ZipCode;
run;
data zip2;
set zip;
by State City ZipCode;
put _n_= City State ZipCode
first.city= last.city=
first.state= last.state=
first.ZipCode= last.ZipCode= ;
run;
1
DATA zip;
2
INPUT State $ City $ ZipCode Street $20-29;
3
DATALINES;
4
FL Miami 33133 Rice St
5
FL Miami 33133 Thomas Ave
6
FL Miami 33133 Surrey Dr
7
FL Miami 33133 Trade Ave
8
FL Miami 33146 Nervia St
9
FL Miami 33146 Corsica St
10
FL Lakeland 33801 French Ave
11
FL Lakeland 33809 Egret Dr
12
AZ Tucson 85730 Domenic Ln
13
AZ Tucson 85730 Gleeson Pl
14
;
15
PROC SORTDATA=zip;
16
BY State City ZipCode;
17
RUN;
18
19
DATA zip2;
20
SET zip;
21
BY State City ZipCode;
22
put _n_= City State ZipCode
23
first.city= last.city=
24
first.state= last.state=
25
first.ZipCode= last.ZipCode= ;
26
RUN;
2 Codeblock
DATA STEP / PROC SORT Data
Erklärung : Jede der BY-Variablen erstellt temporäre Variablen: FIRST.State, LAST.State, FIRST.City, LAST.City, FIRST.ZipCode und LAST.ZipCode. Die Variablen FIRST. und LAST. sind temporäre Variablen, die automatisch von SAS erstellt werden und den Anfang und das Ende jeder BY-Gruppe darstellen. Sie können die Variablen FIRST. und LAST. im DATA-Schritt referenzieren, aber sie sind nicht Teil des Ausgabedatensatzes. Die automatische Variable _N_ wird als Zähler für die Iterationen des DATA-Schritts verwendet und ist im Log sichtbar.
Kopiert!
data zip;
input State $ City $ ZipCode Street $20-29;
datalines;
FL Miami 33133 Rice St
FL Miami 33133 Thomas Ave
FL Miami 33133 Surrey Dr
FL Miami 33133 Trade Ave
FL Miami 33146 Nervia St
FL Miami 33146 Corsica St
FL Lakeland 33801 French Ave
FL Lakeland 33809 Egret Dr
AZ Tucson 85730 Domenic Ln
AZ Tucson 85730 Gleeson Pl
;
proc sort data=zip;
by City State ZipCode;
run;
data zip2;
set zip;
by City State ZipCode;
put _n_= City State ZipCode
first.city= last.city=
first.state= last.state=
first.ZipCode= last.ZipCode= ;
run;
1
DATA zip;
2
INPUT State $ City $ ZipCode Street $20-29;
3
DATALINES;
4
FL Miami 33133 Rice St
5
FL Miami 33133 Thomas Ave
6
FL Miami 33133 Surrey Dr
7
FL Miami 33133 Trade Ave
8
FL Miami 33146 Nervia St
9
FL Miami 33146 Corsica St
10
FL Lakeland 33801 French Ave
11
FL Lakeland 33809 Egret Dr
12
AZ Tucson 85730 Domenic Ln
13
AZ Tucson 85730 Gleeson Pl
14
;
15
PROC SORTDATA=zip;
16
BY City State ZipCode;
17
RUN;
18
19
DATA zip2;
20
SET zip;
21
BY City State ZipCode;
22
put _n_= City State ZipCode
23
first.city= last.city=
24
first.state= last.state=
25
first.ZipCode= last.ZipCode= ;
26
RUN;
3 Codeblock
DATA STEP Data
Erklärung : Eine Änderung eines vorherigen Wertes kann den Wert der Variablen FIRST. beeinflussen, auch wenn der aktuelle Wert der Variablen gleich bleibt. In diesem Beispiel hängen die Werte der Variablen FIRST. und LAST. von der Sortierreihenfolge und dem Wert der BY-Variablen ab. Für Beobachtung 3 wird der Wert von FIRST.Y auf 1 gesetzt, da BLUEBERRY ein neuer Wert für Y ist. Diese Änderung in Y führt dazu, dass FIRST.Z ebenfalls auf 1 gesetzt wird, auch wenn der Wert von Z sich nicht geändert hat. Die Variablen FIRST. und LAST. sind temporäre Variablen, die automatisch von SAS erstellt werden und den Anfang und das Ende jeder BY-Gruppe darstellen. Sie können die Variablen FIRST. und LAST. im DATA-Schritt referenzieren, aber sie sind nicht Teil des Ausgabedatensatzes. Die automatische Variable _N_ wird als Zähler für die Iterationen des DATA-Schritts verwendet und ist im Log sichtbar.
Kopiert!
data fruit;
input x $ y $ 10-18 z $ 21-29;
datalines;
apple banana coconut
apple banana coconut
apple blueberry citron
apricot blueberry citron
;
data _null_;
set fruit;
by x y z;
if _N_=1 then put 'Grouped by X Y Z';
put _n_= x= first.x= last.x= first.y= last.y= first.z= last.z= ;
run;
data _null_;
set fruit;
by y x z;
if _N_=1 then put 'Grouped by Y X Z';
put _n_= first.y= last.y= first.x= last.x= first.z= last.z= ;
run;
1
DATA fruit;
2
INPUT x $ y $ 10-18 z $ 21-29;
3
DATALINES;
4
apple banana coconut
5
apple banana coconut
6
apple blueberry citron
7
apricot blueberry citron
8
;
9
10
DATA _null_;
11
SET fruit;
12
BY x y z;
13
IF _N_=1THEN put 'Grouped by X Y Z';
14
put _n_= x= first.x= last.x= first.y= last.y= first.z= last.z= ;
15
RUN;
16
17
DATA _null_;
18
SET fruit;
19
BY y x z;
20
IF _N_=1THEN put 'Grouped by Y X Z';
21
put _n_= first.y= last.y= first.x= last.x= first.z= last.z= ;
22
RUN;
4 Codeblock
DATA STEP / PROC SORT / PROC PRINT Data
Erklärung : Das folgende Beispiel berechnet die jährliche Gehaltsabrechnung pro Abteilung. Es verwendet IF-THEN-Anweisungen und die Werte der automatischen Variablen FIRST.variable und LAST.variable, um den Wert von PAYROLL zu Beginn jeder BY-Gruppe auf 0 zurückzusetzen und eine Beobachtung nach der Verarbeitung der letzten Beobachtung einer BY-Gruppe zu schreiben. Die Variablen FIRST. und LAST. sind temporäre Variablen, die automatisch von SAS erstellt werden. Sie stellen den Anfang und das Ende jeder BY-Gruppe dar. Die IF/THEN-Anweisung führt Anweisungen bedingt aus.
Kopiert!
data salaries;
input Department $ Name $ WageCategory $ WageRate;
datalines;
BAD Carol Salaried 20000
BAD Elizabeth Salaried 5000
BAD Linda Salaried 7000
BAD Thomas Salaried 9000
BAD Lynne Hourly 230
DDG Jason Hourly 200
DDG Paul Salaried 4000
PPD Kevin Salaried 5500
PPD Amber Hourly 150
PPD Tina Salaried 13000
STD Helen Hourly 200
STD Jim Salaried 8000
;
proc print data=salaries;
run;
proc sort data=salaries out=temp;
by Department;
run;
data budget (keep=Department Payroll);
set temp;
by Department;
if WageCategory='Salaried' then YearlyWage=WageRate*12;
else if WageCategory='Hourly' then YearlyWage=WageRate*2000;
if first.Department then Payroll=0;
Payroll+YearlyWage;
if last.Department;
run;
proc print data=budget;
format Payroll dollar10.;
title 'Annual Payroll by Department';
run;
1
DATA salaries;
2
INPUT Department $ Name $ WageCategory $ WageRate;
3
DATALINES;
4
BAD Carol Salaried 20000
5
BAD Elizabeth Salaried 5000
6
BAD Linda Salaried 7000
7
BAD Thomas Salaried 9000
8
BAD Lynne Hourly 230
9
DDG Jason Hourly 200
10
DDG Paul Salaried 4000
11
PPD Kevin Salaried 5500
12
PPD Amber Hourly 150
13
PPD Tina Salaried 13000
14
STD Helen Hourly 200
15
STD Jim Salaried 8000
16
;
17
18
PROC PRINTDATA=salaries;
19
RUN;
20
21
PROC SORTDATA=salaries out=temp;
22
BY Department;
23
RUN;
24
25
DATA budget (keep=Department Payroll);
26
SET temp;
27
BY Department;
28
IF WageCategory='Salaried'THEN YearlyWage=WageRate*12;
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.