簡體   English   中英

SAS do loop問題

[英]Trouble with SAS do loop

這是我的代碼:

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,結果令人失望。

有什么幫助嗎? 謝謝!

您不能在宏外部使用宏循環。 像處理question宏一樣,將最后一行括在宏中。

另外,您需要結束循環:

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

      <stuff>

   %end
%mend;

%myloop;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM