سؤال

هذا هو رمز بلدي:

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 خطوط ، بدءا من ٪ دو ي = 1 ٪ إلى 5.أقوم بتشغيل الكود الذي يسبقه مرتين لمجموعات البيانات من الإناث والذكور ، ومع آخر 6 أسطر أحاول دمج مجموعات البيانات من الإناث والذكور (على سبيل المثال:مشروع.فيمالستات 1 اندمجت مع المشروع.أن تكون الذكور 1 في مجموعة بيانات جديدة, مشروع.دمج1.) لا يظهر السجل الخاص بي أخطاء ، لكنني لا أحصل على مجموعات البيانات المدمجة أيضا.حاولت بروك سكل مع نتائج مخيبة للآمال.

أي مساعدة?شكراً!

هل كانت مفيدة؟

المحلول

لا يمكنك استخدام حلقات الماكرو خارج الماكرو.أرفق الأسطر الأخيرة في ماكرو كما تفعل question ماكرو.

أيضا ، تحتاج إلى إنهاء الحلقة:

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

      <stuff>

   %end
%mend;

%myloop;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top