If statement 如何放置&&;var&;我进入了if状态
我想创建一个数据集If statement 如何放置&&;var&;我进入了if状态,if-statement,macros,sas,If Statement,Macros,Sas,我想创建一个数据集sasdata.newlist&I,当第I个限制 是和&restri&i(例如:gender='M'和state='CA')。 在这个新创建的数据集中,我只需要满足限制的观察值&&restri&I* 虽然sasdata.newlist2包含sasdata.oldlist中的所有数据,但if条件不起作用。有人能帮我解决这个问题吗? 您没有在正确的上下文中解析宏变量。应用限制代码时,请解析该代码,以便将其作为数据步骤的一部分进行编译(数据步骤) %Macro testing(I);
sasdata.newlist&I
,当第I个限制
是和&restri&i
(例如:gender='M'
和state='CA'
)。
在这个新创建的数据集中,我只需要满足限制的观察值&&restri&I*
虽然sasdata.newlist2包含sasdata.oldlist中的所有数据,但if条件不起作用。有人能帮我解决这个问题吗?
您没有在正确的上下文中解析宏变量。应用限制代码时,请解析该代码,以便将其作为数据步骤的一部分进行编译(数据步骤)
%Macro testing(I);
data sasdata.newlist&i;
set sasdata.oldlist;
%if &&restri&i %then;
run;
%mend testing;
%testing(2)
虽然很难判断何时使用宏语句,但何时不使用宏语句 例如:我是否需要在下面的代码中的if-then-else语句和Do-while语句中添加%呢?顺便问一下,我可以像这样使用“Doi=1到n while(condition)”语句吗
%Macro testing(I);
data sasdata.newlist&i;
set sasdata.oldlist;
/* %if &&restri&i %then; NO-no-no, incorrect context */
* apply ith restriction as a sub-setting IF statement;
if &&restri&i;
run;
%mend testing;
%testing(2)
这不是一个答案,而是一个后续问题。您可以编辑原始问题以获得此示例,也可以作为单独的问题提问。
%Macro testing(I);
data sasdata.newlist&i;
set sasdata.oldlist;
/* %if &&restri&i %then; NO-no-no, incorrect context */
* apply ith restriction as a sub-setting IF statement;
if &&restri&i;
run;
%mend testing;
%testing(2)
%MACRO FUNDSOURCE(I);
DATA SASDATA.STUDENT&I;
SET SASDATA.STUDENTLIST
DO M = 1 TO 310 WHILE(&&BUDG&I > 0); /*loop through all observations_ALL
STUDENTS*/
IF &&BUDG&I LE 3000- FA_TOT1 THEN do;
DISBURSE = &&BUDG&I;
FA_TOT1+DISBURE;
&&BUDG&I - DISBURSE;
end;
ELSE IF &&BUDG&I GT (3000- FA_TOT1) THEN DO;
DISBURSE = 3000-FA_TOT1;
FA_TOT1+DISBURSE;
&&BUDG&I - DISBURSE;
END;
END;
IF _n_ > M THEN DELETE; /*if budget are all gone, delete other observations,
keep observations only for the student who get funds*/
RUN;
%MEND FUNDSOURCE;