【问题标题】:SAS 9.4 Macro Eval Function issuesSAS 9.4 宏评估函数问题
【发布时间】:2016-12-07 15:41:02
【问题描述】:

我有一个名为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;

【问题讨论】:

  • 当您的问题描述描述了您将使用IFWHERE 语句执行的操作时,您为什么要编写%IF 语句?
  • 我刚刚通过这个脚本来修复,我还在学习宏的基础知识。所以我应该只为 Eval 函数添加一个 If 语句?

标签: sas


【解决方案1】:

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

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

【讨论】:

  • 啊!完美的。我明白了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-19
  • 1970-01-01
相关资源
最近更新 更多