Bonjour à tous les passionnés de la donnée ! Nous voici déjà à la quatrième étape de notre roadtrip au cœur de la programmation SAS®.
Dans l'article précédent, nous avons vu comment SAS traite les données de notre concession automobile : une ligne après l'autre, comme sur une chaîne de montage. Aujourd'hui, nous allons lui apprendre à repérer des "familles" de véhicules pour effectuer des opérations spécifiques sur chaque groupe. C'est ce qu'on appelle le traitement par groupe (ou BY-Group processing).
C'est exactement ce que nous allons faire aujourd'hui : apprendre à SAS à "mettre en vitrine" le véhicule le plus récent de chaque marque.
1. Le prérequis absolu : Trier le parking (PROC SORTLa PROC SORT est une procédure SAS permettant de réorganiser les observations d'une table selon l'ordre croissant ou décroissant d'une ou plusieurs variables, tout en supprimant les doublons.)
SAS est un outil puissant, mais il n'est pas devin. Si vous lui demandez de traiter des voitures par marque, mais que votre fichier est un joyeux bazar où une Peugeot suit une Audi, qui elle-même précède une autre Peugeot, SAS va s'emmêler les pinceaux.
Avant tout traitement par groupe dans une étape DATA, il faut obligatoirement trier vos données.
Pour notre exemple, nous allons trier notre parc_auto par marque (de A à Z), et pour chaque marque, nous allons mettre les véhicules du plus récent au plus ancien (ordre décroissant).
2
3
by marque descending annee_fab;
run;
L'astuce du pro : Le mot-clé descending s'applique uniquement à la variable qui le suit immédiatement (annee_fab). La marque, elle, reste triée par défaut en ordre croissant (alphabétique).
2. L'instruction BY dans l'étape DATA
Maintenant que notre parking est bien rangé, nous allons lire ce nouveau fichier parc_trie et indiquer à SAS que nous voulons travailler "par marque". Pour cela, on utilise l'instruction BY.
2
3
4
set parc_trie;
by marque; /* On active le traitement par groupe */
run;
Si vous exécutez ce code tel quel, il ne se passera rien de visible. Et pourtant, en coulisses, l'ajout de ce simple by marque; vient de réveiller un super-pouvoir caché de SAS...
3. Les variablesColonnes d'une table SAS contenant des données spécifiques (numériques ou caractères). Elles possèdent des attributs comme le nom, le type, la longueur, l'étiquette et le format d'affichage. magiques : FIRST et LAST
Dès que vous utilisez l'instruction BY variable;, SAS crée automatiquement et temporairement deux nouvelles variablesColonnes d'une table SAS contenant des données spécifiques (numériques ou caractères). Elles possèdent des attributs comme le nom, le type, la longueur, l'étiquette et le format d'affichage. en mémoireGemini said
Espace de stockage temporaire (RAM) utilisé par le moteur CAS pour charger et traiter les données à haute vitesse, minimisant les accès disque pour optimiser les performances de SAS Viya. pour chaque variable listée dans le BY :
FIRST.variable: vaut 1 si la ligne lue est la première du groupe, sinon elle vaut 0.LAST.variable: vaut 1 si la ligne lue est la dernière du groupe, sinon elle vaut 0.
Note : Ces variablesColonnes d'une table SAS contenant des données spécifiques (numériques ou caractères). Elles possèdent des attributs comme le nom, le type, la longueur, l'étiquette et le format d'affichage. sont invisibles, elles n'apparaîtront pas dans votre table finale, mais vous pouvez les utiliser pour poser des conditions !
4. Application : Isoler le véhicule le plus récent
Rappelez-vous notre objectif : nous voulons isoler la voiture la plus récente pour chaque constructeur afin de la mettre en avant sur notre site web.
Grâce à notre PROC SORTLa PROC SORT est une procédure SAS permettant de réorganiser les observations d'une table selon l'ordre croissant ou décroissant d'une ou plusieurs variables, tout en supprimant les doublons. précédent, nous savons que la première ligne de chaque groupe "marque" correspond obligatoirement au véhicule le plus récent (puisque nous avons trié par année de fabrication décroissante).
Il nous suffit donc de dire à SAS : "Si tu lis la première ligne d'une nouvelle marque, garde-la. Sinon, ignore-la."
2
3
4
5
6
7
set parc_trie;
by marque;
/* Si on est sur le 1er véhicule de la marque (le plus récent) */
if first.marque = 1 then output;
run;
Petite astuce d'écriture : Dans SAS, dire if first.marque = 1 revient au même que d'écrire simplement if first.marque. SAS comprend que vous cherchez la valeur vraie (1).
C'est là toute l'élégance de SAS : en trois lignes de code, nous venons de dédoublonner intelligemment notre base pour ne conserver que la "crème de la crème" de notre inventaire !
"Un bon concessionnaire ne se contente pas d'entasser les voitures au hasard sur son parking. Il les aligne par marque, par modèleReprésentation mathématique entraînée sur des données pour capturer des tendances, prédire des résultats ou classifier des observations via des algorithmes (Régression, Forêt aléatoire, Gradient Boosting)., et s'assure toujours de mettre la plus récente en vitrine."






