Um die Übung konkreter zu gestalten, arbeiten wir mit einer Filmdatenbank. Stellen wir uns eine Tabelle mit folgenden Informationen vor:
Title (Titel): Der Name des Films.
Director (Regisseur): Der Name des Regisseurs.
Studio: Die Produktionsfirma.
Budget_M: Das Filmbudget in Millionen Dollar.
Year (Jahr): Das Erscheinungsjahr.
Hier ist der Code, um diesen Beispieldatensatz zu generieren:
data movies;
infile datalines dsd;
input Title : $20. Director : $15. Studio : $15. Budget_M Year;
datalines;
Inception,Nolan,Warner Bros,160,2010
Tenet,Nolan,Warner Bros,200,2020
Dune,Villeneuve,Warner Bros,165,2021
Jaws,Spielberg,Universal,9,1975
E.T.,Spielberg,Universal,10,1982
Blade Runner 2049,Villeneuve,Warner Bros,150,2017
Avatar,Cameron,Fox,237,2009
Titanic,Cameron,Paramount,200,1997
The Room,Wiseau,,6,2003
.,Unknown,Indie,1,2020
Metropolis,Lang,UFA,.,1927
;
run;
1
DATA movies;
2
INFILEDATALINES dsd;
3
INPUT Title : $20. Director : $15. Studio : $15. Budget_M Year;
4
DATALINES;
5
Inception,Nolan,Warner Bros,160,2010
6
Tenet,Nolan,Warner Bros,200,2020
7
Dune,Villeneuve,Warner Bros,165,2021
8
Jaws,Spielberg,Universal,9,1975
9
E.T.,Spielberg,Universal,10,1982
10
Blade Runner 2049,Villeneuve,Warner Bros,150,2017
11
Avatar,Cameron,Fox,237,2009
12
Titanic,Cameron,Paramount,200,1997
13
The Room,Wiseau,,6,2003
14
.,Unknown,Indie,1,2020
15
Metropolis,Lang,UFA,.,1927
16
;
17
RUN;
Beachten Sie, dass wir absichtlich fehlende Werte eingefügt haben (ein fehlendes Studio für "The Room", ein fehlendes Budget für "Metropolis" und ein fehlender Titel).
Daten mit PROC SORT sortieren
Um die Reihenfolge umzukehren (z. B. um die neuesten Filme zuerst zu sehen), wird das Schlüsselwort DESCENDING verwendet. Achtung, dieses Schlüsselwort wird vor der Variable platziert, die es modifiziert.
Beispiel: Sortieren nach Regisseur (Z bis A) und dann nach Budget (vom teuersten zum billigsten).
proc sort data=movies out=sorted_movies;
by descending Director descending Budget_M;
run;
Daten für die Verarbeitung mit FIRST. und LAST. vorbereiten
Eine der leistungsstärksten Anwendungen der Sortierung ist die Vorbereitung der Daten für den DATA-Schritt, um nur "den besten" oder "den ersten" einer Gruppe zu behalten.
Stellen wir uns vor, wir wollten nur den teuersten Film jedes Regisseurs behalten.
Wir sortieren nach Regisseur.
Wir sortieren nach Budget in absteigender Reihenfolge (damit das größte Budget oben in jeder Gruppe steht).
proc sort data=movies out=sorted_movies;
by Director descending Budget_M;
run;
data big_budget_only;
set sorted_movies;
by Director;
if first.Director then output;
run;
1
PROC SORTDATA=movies out=sorted_movies;
2
BY Director descending Budget_M;
3
RUN;
4
5
DATA big_budget_only;
6
SET sorted_movies;
7
BY Director;
8
IF first.Director THENOUTPUT;
9
RUN;
Der Code if first.Director erfasst die erste Zeile jedes neu angetroffenen Regisseurs. Da wir die Budgets in absteigender Reihenfolge sortiert haben, entspricht diese erste Zeile mechanisch dem teuersten Film.
The codes and examples provided on WeAreCAS.eu are for educational purposes. It is imperative not to blindly copy-paste them into your production environments. The best approach is to understand the logic before applying it. We strongly recommend testing these scripts in a test environment (Sandbox/Dev). WeAreCAS accepts no responsibility for any impact or data loss on your systems.
SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration. WeAreCAS is an independent community site and is not affiliated with SAS Institute Inc.
This site uses technical and analytical cookies to improve your experience.
Read more.