Création de variables dans un Array à partir de macro variables
Bonjour,
J'essaie d'automatiser un code qui permet, à partir d'une liste de variable de faire différents calculs.
Dans mon cas:
La table Table_Com contient une colonne age (de 0 a 120), et une colonne lx_TD contenant des valeurs associées à chaque age.
Je crée 120 macros variables (lxtd1, lxtd2,...) à partir des 120 ages.
Je voudrais dans un array créer des nouvelles variables à partir de ces macros variables.
J'ai plusieurs calculs à faire plus ou moins simples à partir de ces 120 macros variables, par exemple je voudrais ensuite créer une variable qui dépend de deux indices différents:
qi=lxtd(i+1)/lxtdi. Voila pourquoi je voudrais passer par une boucle et non pas faire 120 cas pour chaque calcul.
Dans l'exemple qui suit j'essaie simplement d'attribuer à 120 nouvelles variables les 120 macros variables existantes, mais ça ne fonctionne pas.
Code SAS:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| data Table_Com;
set Table_Com;
call symput(COMPRESS("lxtd"!!age), lx_TD);
run;
%macro a();
data Table_test;
set Table;
array lx(120);
%do i=1 %to 120;
lx(i)=&&lxtd&i.;
/*lx(i)=symget("lxtd"!!LEFT(&i.));*/
%end;
run;
%mend; |
Voila le message d'erreur:
Code:
1 2 3 4 5 6 7 8
| NOTE: Ligne générée par la variable macro "I".
1 &lxtd118.
-
386
--------
201
AVERTISSEMENT: Référence symbolique apparente LXTD118 non traitée.
NOTE: Ligne générée par la variable macro "I". |
Pouvez m'aider ou m'indiquer quelques pistes s'il vous plaît?
Merci.