样本输入数据:
FirstName LastName Group Age LastVenue Position
Jack Smith ULDA 25 TheaterA 1
Jesse James GODL 37 TheaterB 12
Jane Doe ULDA 29 TheaterA 3
Izzy Gord IIPA 41 TheaterC 8
Ann Roswell GODL 30 TheaterB 16
Chelsea Jenk ULDA 19 TheaterA 11
我正在尝试创建:
%macro group_members(group=);
proc print data=sample;
var Position Age Group FirstName LastName;
where group=&group;
%mend group_members;
但是我想向它添加条件,所以如果没有输入任何内容,%group_members()
那么它将按照上面显示的变量顺序显示所有组。如果在这种情况下输入了一个无效组:%group_members(LOL)
那么我希望将一条注释发送到日志%put 'An invalid group was entered'
。因此不应该打印任何内容。我正在尝试在更大的数据集上创建一个非常相似的程序。
我感谢任何高级帮助!谢谢 :)
到目前为止,我已经尝试过:
%macro group_members(group=);
proc sql;
select count(*) into :ct
from sample
where group="&group"
quit;
proc print data=sample;
%if &group ^= %then %do;
where group="&group."; %end;
%if &ct = 0 %then %put An Invalid group was entered;
%else %do;
where group="&group.";
%end; run;
%mend group_members;
我从每个测试中得到错误..例如%group_members()
返回错误:
ERROR: More positional parameters found than defined