SAS 9.4宏评估功能问题

时间:2016-12-07 15:41:02

标签: sas

我有一个名为monthlypayments的数据集,它位于我指定为“培训”的文件夹中,并且有可变付款。

我希望输出“付款类型”,如果付款> 400,则为“高付款”,否则为“低付款”。

我一直收到此错误

  

错误:DS-00075:尝试%EVAL时出现解析错误   表达式:在调用%EVAL **

时找到无效语法

有人可以告诉我我做错了什么吗?

%LET root=D:\Users\Data;
libname training "&root.";

%LET dataset=training.monthlypayments;
%LET outlib=out;
%LET outfile=monthlypaymentsclassified;
%LET variable=payment;

%IF %EVAL(&VARIABLE.>400) %THEN %DO;
data &outlib..&outfile.;
       set &dataset.;
       paymenttype="high payment";
       run;
%ELSE %DO;
data &outlib..&outfile.;
       set &dataset.;
       paymenttype="low payment";
       run;
%END;

1 个答案:

答案 0 :(得分:4)

如果要根据数据中变量的值创建数据的子集,则需要使用普通的SAS代码而不是宏逻辑语句。如果您的宏变量看起来只是告诉您在IF语句中使用哪个数据步骤变量。

data &outlib..&outfile.;
  set &dataset.;
  if &variable > 400 then paymenttype="high payment";
  else paymenttype="low payment";
run;