Pregunta

Este es mi 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;

Todo funciona bien, excepto las últimas 6 líneas, comenzando con% do J= 1% a 5. Corro el código que lo precedió dos veces para conjuntos de datos femeninos y masculinos, y con las últimas 6 líneas, estoy tratando de fusionar los conjuntos de datos femeninos y masculinos (Ej: Project.Femalestats1 se fusionó con Project.Malestats1 para estar en un nuevo conjunto de datos, Project.merged1.) Mi registro no está mostrando errores, pero tampoco estoy obteniendo los conjuntos de datos fusionados.Probé Proc SQL con resultados decepcionantes.

¿Alguna ayuda?¡Gracias!

¿Fue útil?

Solución

No puedes usar bucles macro fuera de una macro.Adjunte las últimas líneas en una macro como usted hace la macro question.

Además, debe terminar el bucle:

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

      <stuff>

   %end
%mend;

%myloop;

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top