Le forum du Master ESA économétrie et statistique appliquée - Université d'Orléans

Vous n'êtes pas identifié.

Annonce

Vous êtes sur le forum du master ESA !

Le site du master ESA - description de la formation, notes de cours, contacts... vient de déménager !!!

Venez visiter notre nouveau site : www.master-esa.fr

#1 25-01-2010 15:10:20

nizarcom
membre extérieur
Date d'inscription: 08-01-2009
Messages: 21

Récuperer +ieurs valeurs d'une macrovariable dans +ieurs macrovariable

Bonjour tt le monde,
est ce que quelqu'u peut m'aider pour résoudre un problème qui me prive d'automatiser ma procédure. Il d'agit d'une macrovariable dont les valeus sont inconnues au départ, tt ce que j'ai comme information c'est le nombre de valeurs de ma ma variable macro;

par exemple :


&list_valeurs = var_1 var_2 var_3 .............var_i , ce que jai donc c le i

ce que je veux faire c'est de mettre chaque var_i dans une macro appart.

aidez moi svp.

jai essyé de faire :
do i=1 to &i ;
%let macro_tick= %scan(&list, &i, ' ');
end;

sachant que jai defint i comme macro de la manière suivante :
call symput(' i ',_N_) ;

mais ça marche pas.


merci d'avance.

Hors ligne

 

#2 26-01-2010 13:48:25

AHOYO
New member
Date d'inscription: 25-09-2008
Messages: 7

Re: Récuperer +ieurs valeurs d'une macrovariable dans +ieurs macrovariable

Slt si j'ai bien compris ton problème,  la connaissance du i n'est pas si primordiale.

Soit la macro-variable

%let list_valeurs= var_1 var_2  var_3....var_i;

/*export des valeurs de la macro-variable list_valeurs dans un fichier nommé toto.txt*/

filename fich "C:\Documents and Settings\Bureau\";
data _null_;
file fich  (toto.txt);
put "&list_valeurs";
run;

/******************************************************************/

/*import du fichier toto.txt et création de la serie de  macros variables contenant chacune les valeurs unitaires de &list_valeurs*/

data test;
infile fich (toto.txt);
input var :$%sysfunc(length(&list_valeurs)).  @@;   *rendre la longueur de la variable var dynamique en fonction de la longueur de la macro-variable &list_valeurs;

call symput(compress("var"!!_n_),var);
run;
/******************************************************************/

*l'instruction suivante te permettra de visionner dans ta log le résultat de la création;

%put _user_;


Allez bon courage!!

Hors ligne

 

#3 26-01-2010 14:22:42

AHOYO
New member
Date d'inscription: 25-09-2008
Messages: 7

Re: Récuperer +ieurs valeurs d'une macrovariable dans +ieurs macrovariable

Une seconde solution , plus courte mais plus technique:


%let list_valeurs = var_1....................var_i ;

%let list_valeurs=%sysfunc(compbl(&list_valeurs));*réduire les espaces multiples à un unique espace, très important pour la suite;

%let nb_space= %sysfunc(countc(&list_valeurs," " ));*astuce pour compter les espaces et ainsi en déduire le nbre de termes;


%macro test;
%do i=1 %to %eval(&nb_space+1);
data _null_;
call symputx (compress("var_&i."),%scan(&list_valeurs., &i.," " ));
run;
%put &&var_&i.;
%end ;

%mend test;

Hors ligne

 

#4 01-02-2010 11:26:05

nizarcom
membre extérieur
Date d'inscription: 08-01-2009
Messages: 21

Re: Récuperer +ieurs valeurs d'une macrovariable dans +ieurs macrovariable

Merci Bp

Hors ligne

 

Pied de page des forums

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson

[ Generated in 0.025 seconds, 6 queries executed ]