@Override
public String toString(){
return this.firstName + " " + this.lastName + " " + this.age;
}
我正在尝试在proc排序语句之前附加条件语句,但是我无法让IF在数据步骤之外工作。有什么方法可以解决这个问题吗?
基本上我不想对任何test_& var进行排序。包含时间变量的数据集,因为它们是我想要保留特定序列的唯一数据集。
答案 0 :(得分:3)
这是一个宏观示例:
/* tell macro language to recognise the in operator */
options minoperator;
/* demo data */
data test_yymm; column1=1;run;
data test_quarter; column1=1;run;
%macro demo(var) ;
/* remove quotes, place not outside the condition */
%if not (&var in quarter period year) %then %do;
proc sort data=test_&var.;
by descending column1;
run;
%end;
%mend;
/* call macro */
%demo(yymm);
%demo(quarter);
您也可以通过调用call execute
:
%let var=yymm;
data _null_;
if "&var" not in ('quarter' 'period' 'year') then do;
call execute("
proc sort data=test_&var.;
by descending column1;
run;
");
end;
run;
请记住,SAS宏语言是基于文本的,因此不需要引用变量。与常规SAS代码不同,其中需要引用字符串文字以便被识别为..