SAS MACRO的几个注意点:
(1)&,&&的阅读。
掌握一个规律,从右往左读。
比如:
%let x1=roki;
%let x2=man;
请问以下程序的输出结果:
%do i=1 %to 2;
%put &&x&i;
%end;
以上程序时考察&&x&i的读法。首先,从左往右读,第一遍翻译 &i =1 ,两个&&=&,因此第一遍结果为&x1, 第二遍翻译&x1的值为 roki,所以输出的结果是roki,因此输出的结果为:
roki
man
(2)SAS MACRO里面的赋值
平常在data step里面,只要使用 y=x1+x2;就可了,但是在MACRO里面要使用:
%let y=&x1;
如果有涉及到运算符号的,则要使用%eval或者%evalf(浮点运算)
%let y=%evalf(&x1+&x2);
(3)将DATA STEP里面的值赋给宏变量
DATA _NULL_;
SET DUMP;
IF X=. THEN CALL SYMPUT('LastMiss',_N_);
run;
以上程序将最后一个x的缺失值的记录数赋给LastMiss这个变量。
请思考,为什么是最后一个缺失值。如果这个问题没有弄明白,就说明对SAS BASE的最基本的PDV的原理没有掌握。