SAS9

Tutoriel SAS : Maîtriser le tri des données avec PROC SORT

Simon 13 vistas
Niveau de difficulté
Débutant
Publicado el :
Stéphanie

Consejo del experto

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.

Le tri est une opération essentielle dans la gestion de bases de données. Ce tutoriel vous explique comment utiliser la procédure SORT de SAS© pour organiser vos enregistrements, que ce soit pour préparer un rapport ou pour nettoyer des données avant analyse.

Tutoriel SAS : Maîtriser le tri des données avec PROC SORT -

Pour commencer : Le jeu de données "Box Office"

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.

Tutoriel SAS : Maîtriser le tri des données avec PROC SORT -

Voici le code pour générer ce jeu de données exemple :

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;
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).

1 
2PROC SORT
3DATA=movies out=sorted_movies;
4 
5BY descending Director descending Budget_M;
6 
7RUN;
8 
Si vous oubliez le second DESCENDING devant Budget_M, SAS© triera les budgets par ordre croissant par défaut, même si les réalisateurs sont inversés.

Rappel : Il n'existe pas de mot-clé "ASCENDING". Si vous l'écrivez, SAS© renverra une erreur.
Tutoriel SAS : Maîtriser le tri des données avec PROC SORT -

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.

  1. On trie par Réalisateur.

  2. On trie par Budget en ordre décroissant (pour que le plus gros budget soit en haut de chaque groupe).

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;
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.

Comparaison : PROC SORT vs PROC SQL

Les développeurs habitués au SQL (Structured Query Language) doivent faire attention à la syntaxe, car elle est inversée par rapport à SAS©.

En SAS© (PROC SORT) : DESCENDING se place avant la variable. En SQL (ORDER BY) : DESC se place après la variable.

Voici l'équivalent en SQL :

1PROC SQL;
2 SELECT * FROM movies
3 ORDER BY Director DESC, Budget_M DESC;
4QUIT;
Moyen mnémotechnique : "SORT avant, SQL après".
Tutoriel SAS : Maîtriser le tri des données avec PROC SORT -

Le tri est une opération qui consomme de la mémoire et du temps processeur. Si vos données de films proviennent déjà d'un serveur SQL ou Oracle, il est souvent préférable de laisser le serveur de base de données gérer le tri via sa propre indexation plutôt que d'importer les données en désordre pour les trier ensuite avec SAS©.