SAS9

SAS-Tutorial: Daten sortieren mit PROC SORT meistern

Simon 11 views

Das Sortieren ist ein wesentlicher Vorgang bei der Verwaltung von Datenbanken. In diesem Tutorial erfahren Sie, wie Sie die Prozedur SORT von SAS© verwenden, um Ihre Datensätze zu organisieren, sei es zur Vorbereitung eines Berichts oder zur Bereinigung von Daten vor der Analyse.

SAS-Tutorial: Daten sortieren mit PROC SORT meistern -

Zu Beginn: Der Datensatz "Box Office"

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.

SAS-Tutorial: Daten sortieren mit PROC SORT meistern -

Hier ist der Code, um diesen Beispieldatensatz zu generieren:

1DATA movies;
2 INFILE DATALINES dsd;
3 INPUT Title : $20. Director : $15. Studio : $15. Budget_M Year;
4 DATALINES;
5Inception,Nolan,Warner Bros,160,2010
6Tenet,Nolan,Warner Bros,200,2020
7Dune,Villeneuve,Warner Bros,165,2021
8Jaws,Spielberg,Universal,9,1975
9E.T.,Spielberg,Universal,10,1982
10Blade Runner 2049,Villeneuve,Warner Bros,150,2017
11Avatar,Cameron,Fox,237,2009
12Titanic,Cameron,Paramount,200,1997
13The Room,Wiseau,,6,2003
14.,Unknown,Indie,1,2020
15Metropolis,Lang,UFA,.,1927
16;
17RUN;
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).

1 
2PROC SORT
3DATA=movies out=sorted_movies;
4 
5BY descending Director descending Budget_M;
6 
7RUN;
8 
Wenn Sie das zweite DESCENDING vor Budget_M vergessen, sortiert SAS© die Budgets standardmäßig in aufsteigender Reihenfolge, auch wenn die Regisseure umgekehrt sind.

Erinnerung: Es gibt kein Schlüsselwort "ASCENDING". Wenn Sie es schreiben, gibt SAS© einen Fehler zurück.
SAS-Tutorial: Daten sortieren mit PROC SORT meistern -

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.

  1. Wir sortieren nach Regisseur.

  2. Wir sortieren nach Budget in absteigender Reihenfolge (damit das größte Budget oben in jeder Gruppe steht).

1PROC SORT DATA=movies out=sorted_movies;
2 BY Director descending Budget_M;
3RUN;
4 
5DATA big_budget_only;
6 SET sorted_movies;
7 BY Director;
8 IF first.Director THEN OUTPUT;
9RUN;
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.

Vergleich: PROC SORT vs. PROC SQL

Entwickler, die an SQL (Structured Query Language) gewöhnt sind, müssen auf die Syntax achten, da sie im Vergleich zu SAS© umgekehrt ist.

In SAS© (PROC SORT): DESCENDING wird vor der Variable platziert. In SQL (ORDER BY): DESC wird nach der Variable platziert.

Hier ist das Äquivalent in SQL:

1PROC SQL;
2 SELECT * FROM movies
3 ORDER BY Director DESC, Budget_M DESC;
4QUIT;
Eselsbrücke: "SORT davor, SQL danach".
SAS-Tutorial: Daten sortieren mit PROC SORT meistern -

Das Sortieren ist ein speicher- und zeitaufwändiger Vorgang. Wenn Ihre Filmdaten bereits von einem SQL- oder Oracle-Server stammen, ist es oft besser, den Datenbankserver die Sortierung über seine eigene Indizierung durchführen zu lassen, anstatt die Daten unsortiert zu importieren und sie dann mit SAS© zu sortieren.