Créer des macros variables indicées dans une étape DATA

SAS BASE 28 oct. 2019

La première étape consiste à utiliser les données d'une table déjà existante pour en faire des macro variables avec un indice sur le numéro de la ligne.

data _null_; /* pas besoin de table de sortie */
    set sashelp.class end=last;
    call symputx(compress("name"||_N_),name); /* Création de macro sur le nom */
    call symputx(compress("age"||_N_),age); /* Création de macro sur le l'age */
    if last then call symputx("end",_N_); /* Création d'une macro sur la dernière ligne */
run;

/*%put &name1.; --> Alfred */

La création de macro en série nous permet ensuite de faire une boucle et de réutiliser les valeurs indicées.

%macro print_macro;  /* Création d'une macro simple pour afficher les valeurs */
    %do i = 1 %to &end. ; /* --> Jusqu'au nb d'observations */
        %put &&name&i.., &&age&i; /* Affichage des valeurs dans la log */
    %end; /* Fin de la boucle */
%mend; /* Fin de la macro */
%print_macro; /* Appel de la macro */

Résultat dans la log:
Alfred, 14
Alice, 13
Barbara, 13
Carol, 14
Henry, 14
James, 12
Jane, 12
Janet, 15
Jeffrey, 13
John, 12
Joyce, 11
Judy, 14
Louise, 12
Mary, 15
Philip, 16
Robert, 12
Ronald, 15
Thomas, 11
William, 15

Super ! Vous vous êtes inscrit avec succès.
Super ! Effectuez le paiement pour obtenir l'accès complet.
Bon retour parmi nous ! Vous vous êtes connecté avec succès.
Parfait ! Votre compte est entièrement activé, vous avez désormais accès à tout le contenu.