Publié le :
Macro SASHELP

Segmentation dynamique de données via Macro Variables

Ce code est également disponible en : Deutsch English Español Français
En attente de validation
Ce programme définit une macro 'split_data'. Il utilise PROC SQL pour identifier toutes les valeurs uniques de la colonne ORIGIN de la table SASHELP.CARS et les stocke dans une série de variables macro numérotées (liste verticale). Une boucle %DO est ensuite initiée pour itérer sur ces valeurs. Note : Le code fourni est un exercice à compléter, car les instructions à l'intérieur de la boucle contiennent des valeurs codées en dur ('Asia') qui sont destinées à être remplacées par des références macro dynamiques (&&var&i).
Analyse des données

Type : SASHELP


Utilise la table d'exemple standard SASHELP.CARS.

1 Bloc de code
PROC SQL
Explication :
Sélectionne les valeurs distinctes de la colonne ORIGIN et les stocke dans des variables macro incrémentales (:ORIGIN1, :ORIGIN2, etc.). La variable automatique &sqlobs est récupérée pour connaître le nombre total d'origines.
Copié !
1 * Create the vertical macro variable list.;
2 PROC SQL noprint;
3 select distinct origin into :ORIGIN1-
4 from sashelp.cars;
5 %let NUM_ORIGINS = &sqlobs;
6 QUIT;
2 Bloc de code
DATA STEP Data
Explication :
Boucle macro itérative destinée à créer une table pour chaque origine. Dans l'état actuel (exercice non résolu), elle écrase répétitivement la table 'cars_asia' avec les données filtrées sur 'Asia'. L'objectif est de remplacer 'Asia' par &&ORIGIN&i.
Copié !
1 /* Replace both hard-coded values of ASIA below using the a reference
2 to a vertical macro variable list. */
3 
4 %DO i = 1 %to &NUM_ORIGINS;
5 DATA cars_asia; * CHANGE THIS LINE ;
6 SET sashelp.cars;
7 where origin = "Asia"; * CHANGE THIS LINE ;
8 RUN;
9 %END;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Informations de Copyright : Instructor : Josh Horstman


Banner
Le Conseil de l'Expert
Expert
Stéphanie
Spécialiste Machine Learning et IA.
« L'un des défis majeurs de la programmation SAS est de passer d'un code statique à un processus piloté par les données (Data-Driven). Dans cet exercice, l'objectif est d'automatiser la création de plusieurs tables en fonction des valeurs réelles présentes dans vos données, évitant ainsi de dupliquer manuellement des étapes DATA.

Attention au nommage de vos tables de sortie. Si vos données contiennent des caractères spéciaux ou des espaces dans la colonne ORIGIN, l'utilisation directe de cars_&&ORIGIN&i pourrait générer des noms de tables invalides. Dans ce cas, pensez à utiliser la fonction %SYSFUNC(COMPRESS(...)) pour nettoyer le nom de la table créée. »