Проблема с циклом выполнения SAS

Это мой код:

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;

Все работает нормально, за исключением последних 6 строк, начиная с %do j = 1% до 5. Я запускаю код, предшествующий ему, дважды для наборов данных для женщин и мужчин, а с помощью последних 6 строк я пытаюсь объединить наборы данных для женщин и мужчин. (например: project.Femalestats1 объединен с project.Malestats1, чтобы быть в новом наборе данных, project.merged1.) Мой журнал не показывает ошибок, но я также не получаю объединенные наборы данных. Я попробовал proc sql с неутешительными результатами.

Любая помощь? Спасибо!


person user2714330    schedule 16.11.2013    source источник


Ответы (1)


Вы не можете использовать циклы макросов вне макроса. Включите последние строки в макрос, как вы делаете макрос question.

Кроме того, вам нужно завершить цикл:

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

      <stuff>

   %end
%mend;

%myloop;
person DomPazz    schedule 16.11.2013