Question

Ceci est mon code:

libname Project 'XXX'; run;
%let dname = q1males;
%let Gender = 'Male';
%let samp = q1msamp;
%let stats = Malestats;


data project.data1; set project.data;
id = _n_;
run;



data project.&dname; set project.data1; 
if Gender = &Gender;
run;
%macro question;
%do i = 1 %to 5;

proc surveyselect data = project.&dname method = SRS sampsize = 27 
                out = project.&samp;
                id _all_;
run;

proc print data = project.&samp;
run;

proc sql;
create table project.&stats&i as
select 'Weight',
avg(Weight) as Mean format 10.2 label 'Mean Weight',
std(Weight) as Std format 10.2 label 'Std. Dev Weight'
from project.&samp;
QUIT;
%end;
%mend question;
%question;

%do j = 1 %to 5;
data project.merged&j;
merge project.femalestats&j project.malestats&j;
by _Tema003 Mean Std;
run;

Tout fonctionne bien à l'exception des 6 dernières lignes, en commençant par% DO J= 1% à 5. J'exécute le code qui l'a précédé deux fois pour les jeux de données féminins et masculins, et avec les 6 dernières lignes, j'essaie de fusionner les jeux de données féminins et masculins (ex: projet.femalestats1 fusionné avec projet.Malestats1 à être dans un nouveau jeu de données, projet.MroDRed1.) Mon journal ne montre pas des erreurs, mais je ne reçois pas les jeux de données fusionnés non plus.J'ai essayé Proc SQL avec des résultats décevants.

Toute aide?Merci!

Était-ce utile?

La solution

Vous ne pouvez pas utiliser de boucles de macro en dehors d'une macro.Joignez les dernières lignes d'une macro comme vous faites la macro question.

En outre, vous devez mettre fin à la boucle:

%macro myloop();
   %do i=1 %to 5;

      <stuff>

   %end
%mend;

%myloop;

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top