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 : Sélectionner tout - Visualiser dans une fenêtre à part
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:
Pouvez m'aider ou m'indiquer quelques pistes s'il vous plaît?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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".
Merci.
Partager