SAS 9.4宏评估功能问题

SAS 9.4宏评估功能问题,sas,Sas,我有一个名为monthlypayments的数据集,它位于我分配给“training”的文件夹中,具有可变付款 我想输出“付款类型”,如果付款>400,则为“高付款”,否则为“低付款” 我一直在犯这个错误 错误:DS-00075:尝试%EVAL时发生分析错误 表达式:在对%EVAL的调用中找到无效语法** 有人能告诉我我做错了什么吗 %LET root=D:\Users\Data; libname training "&root."; %LET dataset=training.mon

我有一个名为monthlypayments的数据集,它位于我分配给“training”的文件夹中,具有可变付款

我想输出“付款类型”,如果付款>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;

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

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

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

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

当您的问题描述描述描述了您将使用
IF
WHERE
语句执行的操作时,为什么要编写
%IF
语句?我刚刚通过此脚本进行修复,我还在学习宏的基础知识。所以我应该为Eval函数编写一个If语句?当您的问题描述描述描述了将使用
If
WHERE
语句执行的操作时,为什么要编写
%If
语句?我刚刚通过这个脚本进行了修复,我还在学习宏的基础知识。所以我应该为Eval函数准备一个If语句?啊!完美的我明白了!完美的我理解