Problema com SAS do loop
Pergunta
Este é o meu código:
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;
Tudo funciona bem, exceto as últimas 6 linhas, começando com %do j = 1 %to 5.Eu executo o código anterior duas vezes para conjuntos de dados femininos e masculinos e, com as últimas 6 linhas, estou tentando mesclar os conjuntos de dados femininos e masculinos (ex:Project.FemalEstats1 Mesada com o Project.Malestats1 para estar em um novo conjunto de dados, Project.Merged1.) Meu log não está mostrando erros, mas também não estou recebendo os conjuntos de dados mesclados.Tentei proc sql com resultados decepcionantes.
Qualquer ajuda?Obrigado!
Solução
Você não pode usar loops de macro fora de uma macro.Coloque as últimas linhas em uma macro como você faz question
macro.
Além disso, você precisa encerrar o loop:
%macro myloop();
%do i=1 %to 5;
<stuff>
%end
%mend;
%myloop;