【问题标题】:Passing Parameters in a SAS Macro在 SAS 宏中传递参数
【发布时间】:2016-11-12 22:28:24
【问题描述】:

我正在为一项学校作业编写一个宏,该宏会将航空公司的名称传递给宏,我确信它与缺少的字符串和“和”有关,但它不会运行。请告诉我我做错了什么。

%macro select airine=;

proc means data=mytables.airtraffic noprint ;
where bosflights gt 0 and bospassengers gt 0;
by &airline;
var bosflights bospassengers;
output out=mytables.bosflightsairport sum (bosflights bospassengers)=  flights passengers;`
run;
%mend select;
%select airline = Envoy Air;

【问题讨论】:

  • 我已经解决了这个问题,但仍然出现错误 22-322:语法错误,需要以下之一:名称、;、降序、未排序、全部、字符、字符、数字。

标签: parameters macros sas


【解决方案1】:

您在宏定义和调用中缺少()。

%macro select(airline=);
...
%mend select;
%select(airline = Envoy Air);

你是传入变量名还是变量值?您现在编写的方式是传入两个变量名称 ENVOY 和 AIR,您想使用它们来对 AIRTRAFFIC 数据集中的数据进行分组。

如果您的意思是使用参数值来对数据进行子集化,那么假设您在数据集中有一个名为 AIRLINE 的变量,那么您可能想要这样的东西作为宏的主体。

proc means data=mytables.airtraffic noprint ;
  where bosflights gt 0 and bospassengers gt 0;
  where also airline="&airline";
  var bosflights bospassengers;
  output out=mytables.bosflightsairport
         sum(bosflights bospassengers)=  flights passengers
  ;`
run;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多