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!

Foi útil?

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;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top