Veröffentlicht am :
Datenmanipulation CREATION_INTERNE

Beispiele: Verarbeitung von BY-Gruppen mit den Variablen FIRST. und LAST. des Datenverarbeitungsschritts

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Die Funktionsanalyse konzentriert sich darauf, wie SAS© die temporären Variablen FIRST.<variable> und LAST.<variable> verwendet, um den Anfang und das Ende jeder BY-Gruppe zu markieren. Diese Variablen werden automatisch von SAS© generiert und nehmen den Wert 1 am Anfang (FIRST.) oder am Ende (LAST.) einer Gruppe an, und ansonsten 0. Ihr Verhalten wird stark durch die Sortierreihenfolge der Daten beeinflusst. Die Beispiele veranschaulichen ihre Verwendung im DATA Step, um Gruppenbegrenzungen zu identifizieren und spezifische Aktionen auszuführen, wie das Initialisieren von Zählern oder das Schreiben von aggregierten Ergebnissen. Es ist wichtig zu beachten, dass diese Variablen temporär sind und nicht Teil des Ausgabe-Datasets. Die automatische Variable _N_ wird auch verwendet, um die Iterationen des DATA Steps zu verfolgen.
Datenanalyse

Type : CREATION_INTERNE


Die Beispiele verwenden generierte Daten (datalines).

1 Codeblock
DATA STEP / PROC SORT Data
Erklärung :
Dieses Beispiel zeigt, wie SAS die Variablen FIRST.<variable> und LAST.<variable> verwendet, um den Anfang und das Ende von BY-Gruppen zu markieren. 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 im DATA Step referenziert werden, sind aber nicht Teil des Ausgabe-Datasets. Die automatische Variable _N_ wird als Zähler für die Iterationen des DATA Steps verwendet.
Kopiert!
1DATA zip;
2INPUT State $ City $ ZipCode Street $20-29;
3DATALINES;
4FL Miami 33133 Rice St
5FL Miami 33133 Thomas Ave
6FL Miami 33133 Surrey Dr
7FL Miami 33133 Trade Ave
8FL Miami 33146 Nervia St
9FL Miami 33146 Corsica St
10FL Lakeland 33801 French Ave
11FL Lakeland 33809 Egret Dr
12AZ Tucson 85730 Domenic Ln
13AZ Tucson 85730 Gleeson Pl
14;
15PROC SORT DATA=zip;
16 BY State City ZipCode;
17RUN;
18 
19DATA 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= ;
26RUN;
2 Codeblock
DATA STEP / PROC SORT Data
Erklärung :
Dieses Beispiel veranschaulicht, dass jede BY-Variable temporäre Variablen (FIRST.State, LAST.State, FIRST.City, LAST.City, FIRST.ZipCode und LAST.ZipCode) erzeugt. 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 im DATA Step referenziert werden, sind aber nicht Teil des Ausgabe-Datasets. Die automatische Variable _N_ wird als Zähler für die Iterationen des DATA Steps verwendet.
Kopiert!
1DATA zip;
2INPUT State $ City $ ZipCode Street $20-29;
3DATALINES;
4FL Miami 33133 Rice St
5FL Miami 33133 Thomas Ave
6FL Miami 33133 Surrey Dr
7FL Miami 33133 Trade Ave
8FL Miami 33146 Nervia St
9FL Miami 33146 Corsica St
10FL Lakeland 33801 French Ave
11FL Lakeland 33809 Egret Dr
12AZ Tucson 85730 Domenic Ln
13AZ Tucson 85730 Gleeson Pl
14;
15PROC SORT DATA=zip;
16BY City State ZipCode;
17RUN;
18 
19DATA zip2;
20 SET zip;
3 Codeblock
DATA STEP Data
Erklärung :
Dieses Beispiel zeigt, dass eine Änderung eines früheren Werts den Wert von FIRST.<variable> beeinflussen kann, auch wenn der aktuelle Wert der Variablen gleich bleibt. Die Werte von FIRST.<variable> und LAST.<variable> hängen 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, was auch dazu führt, dass FIRST.Z auf 1 gesetzt wird, obwohl sich der Wert von Z nicht geändert hat. Die Variablen FIRST. und LAST. sind temporär, werden automatisch von SAS erstellt und stellen den Anfang und das Ende jeder BY-Gruppe dar.
Kopiert!
1DATA fruit;
2 INPUT x $ y $ 10-18 z $ 21-29;
3 DATALINES;
4apple banana coconut
5apple banana coconut
6apple blueberry citron
7apricot blueberry citron
8;
9 
10DATA _null_;
11 SET fruit;
12 BY x y z;
13 IF _N_=1 THEN put 'Grouped by X Y Z';
14 put _N_= x= first.x= last.x= first.y= last.y= first.z= last.z= ;
15RUN;
16 
17DATA _null_;
18 SET fruit;
19 BY y x z;
20 IF _N_=1 THEN put 'Grouped by Y X Z';
21 put _N_= first.y= last.y= first.x= last.x= first.z= last.z= ;
22RUN;
4 Codeblock
DATA STEP / PROC SORT Data
Erklärung :
Dieses 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 am Anfang 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är und werden automatisch von SAS erstellt. Die IF/THEN-Anweisung führt die Anweisungen bedingt aus.
Kopiert!
1DATA salaries;
2 INPUT Department $ Name $ WageCategory $ WageRate;
3 DATALINES;
4BAD Carol Salaried 20000
5BAD Elizabeth Salaried 5000
6BAD Linda Salaried 7000
7BAD Thomas Salaried 9000
8BAD Lynne Hourly 230
9DDG Jason Hourly 200
10DDG Paul Salaried 4000
11PPD Kevin Salaried 5500
12PPD Amber Hourly 150
13PPD Tina Salaried 13000
14STD Helen Hourly 200
15STD Jim Salaried 8000
16;
17 
18PROC SORT DATA=salaries out=temp;
19 BY Department;
20RUN;
21 
22DATA budget (keep=Department Payroll);
23 SET temp;
24 BY Department;
25 IF WageCategory='Salaried' THEN YearlyWage=WageRate*12;
26 ELSE IF WageCategory='Hourly' THEN YearlyWage=WageRate*2000;
27 
28 IF first.Department THEN Payroll=0;
29 Payroll+YearlyWage;
30 IF last.Department;
31RUN;
32 
33PROC PRINT DATA=budget;
34 FORMAT Payroll dollar10.;
35 title 'Annual Payroll by Department';
36RUN;
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