Macro SAS : utiliser les données d'un fichier
Résolu
ju_mp
Messages postés
23
Date d'inscription
Statut
Membre
Dernière intervention
-
ju_mp Messages postés 23 Date d'inscription Statut Membre Dernière intervention -
ju_mp Messages postés 23 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai écrit une macro SAS qui fonctionne... jusque là tout va bien.
Pour l'exécuter, il faut entrer 3 paramètres : ESA ESS et beta. En tout, j'ai 72 combinaisons de ces paramètres. qui sont contenues dans un table de ce genre :
ESA ESS beta
0.25 0.25 0.1
0.25 0.33 0.1
0.25 0.25 0.2
0.25 0.33 0.2
0.33 0.25 0.1
0.33 0.33 0.1
...
Donc je voudrais exécuter ma macro sans avoir à écrire 72 fois '%nb(ESA, ESS, beta);' pour éviter de faire des erreurs.
J'aimerais savoir s'il y a un moyen d'utiliser les données qui sont dans ma table ci-dessus.
J'ai en fait essayé de créer une étape data avec des call symput :
data param;
set param;
call symput ('ES_A', ES_A);
call symput ('ES_S', ES_S);
call symput ('beta', beta);
run;
Mais lorsque je lance ma macro, comme ceci : %nb(&ES_S, &ES_A, &beta);
je n'obtiens un résultat que pour la dernière ligne de ma table.
Si vous pouviez m'aider, ça serait vraiment sympa.
Merci d'avance.
Ju_mp
J'ai écrit une macro SAS qui fonctionne... jusque là tout va bien.
Pour l'exécuter, il faut entrer 3 paramètres : ESA ESS et beta. En tout, j'ai 72 combinaisons de ces paramètres. qui sont contenues dans un table de ce genre :
ESA ESS beta
0.25 0.25 0.1
0.25 0.33 0.1
0.25 0.25 0.2
0.25 0.33 0.2
0.33 0.25 0.1
0.33 0.33 0.1
...
Donc je voudrais exécuter ma macro sans avoir à écrire 72 fois '%nb(ESA, ESS, beta);' pour éviter de faire des erreurs.
J'aimerais savoir s'il y a un moyen d'utiliser les données qui sont dans ma table ci-dessus.
J'ai en fait essayé de créer une étape data avec des call symput :
data param;
set param;
call symput ('ES_A', ES_A);
call symput ('ES_S', ES_S);
call symput ('beta', beta);
run;
Mais lorsque je lance ma macro, comme ceci : %nb(&ES_S, &ES_A, &beta);
je n'obtiens un résultat que pour la dernière ligne de ma table.
Si vous pouviez m'aider, ça serait vraiment sympa.
Merci d'avance.
Ju_mp
A voir également:
- Macro SAS : utiliser les données d'un fichier
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Excel récupérer couleur cellule sans macro ✓ - Forum Bureautique
- Macro maker - Télécharger - Divers Utilitaires
1 réponse
Bonjour,
Bon, je réponds à mes propres questions, car j'ai eu de l'aide par ailleurs, et je me dis que ça peut peut-être aider quelqu'un :
Il faut utiliser un pgm comme ci-dessous :
Code :
DATA _null_;
SET param end=fin;
call symput("ES_A" || compress(_N_),ES_A);
call symput("ES_S" || compress(_N_),ES_S);
call symput("beta" || compress(_N_),beta);
call symput("M_N", compress(_N_));
run;
Ainsi pour chaque ligne de la table PARAM, tu récupéres 3 macros variables :
ES_A1, ES_S1 et beta1 pour la ligne 1, ...
M_N te donne le nombre de lignes traités et permet ensuite de faire une boucle :
Code :
%do i=1 %TO &M_N;
%nb(&&ES_S&i,&&ES_A&i, &&beta&i);
run;
%end;
Bon, je réponds à mes propres questions, car j'ai eu de l'aide par ailleurs, et je me dis que ça peut peut-être aider quelqu'un :
Il faut utiliser un pgm comme ci-dessous :
Code :
DATA _null_;
SET param end=fin;
call symput("ES_A" || compress(_N_),ES_A);
call symput("ES_S" || compress(_N_),ES_S);
call symput("beta" || compress(_N_),beta);
call symput("M_N", compress(_N_));
run;
Ainsi pour chaque ligne de la table PARAM, tu récupéres 3 macros variables :
ES_A1, ES_S1 et beta1 pour la ligne 1, ...
M_N te donne le nombre de lignes traités et permet ensuite de faire une boucle :
Code :
%do i=1 %TO &M_N;
%nb(&&ES_S&i,&&ES_A&i, &&beta&i);
run;
%end;