Tutoriel SAS : Maîtriser le tri des données avec PROC SORT
Simon 13 Aufrufe
Niveau de difficulté
Débutant
Veröffentlicht am :
Expertenrat
Stéphanie
Ne voyez pas PROC SORT comme un simple outil de mise en forme, mais comme le prérequis indispensable aux traitements itératifs puissants via FIRST. et LAST.. Attention au piège classique des développeurs SQL : en SAS, l'instruction DESCENDING doit impérativement précéder la variable ciblée. Une erreur ici ne générera pas de message d'alerte, mais faussera silencieusement toute votre logique de dédoublonnage.
Pour rendre l'exercice plus concret, nous allons travailler avec une base de données de films. Imaginons une table contenant les informations suivantes :
Title (Titre) : Le nom du film.
Director (Réalisateur) : Le nom du metteur en scène.
Studio : La société de production.
Budget_M : Le budget du film en millions de dollars.
Year (Année) : L'année de sortie.
Voici le code pour générer ce jeu de données exemple :
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;
Notez que nous avons inclus volontairement des valeurs manquantes (un studio manquant pour "The Room", un budget manquant pour "Metropolis" et un titre manquant).
Trier les données avec PROC SORT
Pour inverser l'ordre (par exemple, voir les films les plus récents en premier), on utilise le mot-clé DESCENDING. Attention, ce mot-clé se place devant la variable qu'il modifie.
Exemple : Trier par Réalisateur (Z à A) puis par Budget (du plus cher au moins cher).
proc sort data=movies out=sorted_movies;
by descending Director descending Budget_M;
run;
Préparer les données pour le traitement FIRST. et LAST.
L'une des utilisations les plus puissantes du tri est de préparer les données pour l'étape DATA, afin de ne garder que "le meilleur" ou "le premier" d'un groupe.
Imaginons que nous voulions conserver uniquement le film le plus cher de chaque réalisateur.
On trie par Réalisateur.
On trie par Budget en ordre décroissant (pour que le plus gros budget soit en haut de chaque groupe).
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;
Le code if first.Director permet de capturer la première ligne de chaque nouveau réalisateur rencontré. Comme nous avons trié les budgets par ordre décroissant, cette première ligne correspond mécaniquement au film le plus cher.
Die auf WeAreCAS.eu bereitgestellten Codes und Beispiele dienen Lehrzwecken. Es ist zwingend erforderlich, sie nicht blind in Ihre Produktionsumgebungen zu kopieren. Der beste Ansatz besteht darin, die Logik zu verstehen, bevor sie angewendet wird. Wir empfehlen dringend, diese Skripte in einer Testumgebung (Sandbox/Dev) zu testen. WeAreCAS übernimmt keine Verantwortung für mögliche Auswirkungen oder Datenverluste auf Ihren Systemen.
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.