Bonjour,
Je relance mon problème. Je souhaiterai qu'une partie de mon programme SAS s'écrive "automatiquement" selon les paramètres de la macro.
Par exemple :
Ici, le nombre d'items est de 5 et le nombre de modalités (5-1). Il faut que ces lignes s'écrivent automatiquement, leur nombre peut varier selon le nombre de modalités et leur longueur peut être différente selon le nombre d'items.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 eta1=beta11*item1+beta21*item2+beta31*item3+beta41*item4+beta51*item5; eta2=beta12*item1+beta22*item2+beta32*item3+beta42*item4+beta52*item5; eta3=beta13*item1+beta23*item2+beta33*item3+beta43*item4+beta53*item5; eta4=beta14*item1+beta24*item2+beta34*item3+beta44*item4+beta54*item5;
J'ai donc commencé à écrire la macro suivante :
Mais cela ne fonctionne pas.
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 %macro modele1a(var_temps=, temps=, nbitem=, nbmodalite=); %do j=1 %to %eval(&nbmodalite.-1); %do i=1 %to &nbitem ; %let eta&j&i= beta&i&j*item&i ; %end; %end; %do j=1 %to %eval(&nbmodalite.-1); %do i=1 %to &nbitem ; &&eta&j = %sysfunc(catx('+',&transition,&&&eta&j&i)); %let transition=&&eta&j; %end; %end; %mend; %modele1a (var_temps=temp,temps=0-6,nbitem=5,nbmodalite=5);
Faut- il que je continue sur cette idée ou y'a t-il de meilleurs moyens de réaliser ce que je souhaite faire ?
Peut être travailler avec des chaînes de caractères ?
Merci de m'aider!
Partager