我正在为学校作业编写一个宏,它将航空公司的名称传递给宏,我相信它与字符串和"有关。和'缺少,但它不会运行。请告诉我我做错了什么。
%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;
答案 0 :(得分:2)
您错过了宏定义中的()
并致电。
%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;