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.
Les codes et exemples fournis sur WeAreCAS.eu sont à but pédagogique. Il est impératif de ne pas les copier-coller aveuglément sur vos environnements de production. La meilleure approche consiste à comprendre la logique avant de l'appliquer. Nous vous recommandons vivement de tester ces scripts dans un environnement de test (Sandbox/Dev). WeAreCAS décline toute responsabilité quant aux éventuels impacts ou pertes de données sur vos systèmes.
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.