好了,这周算是有些时间来更新一下咯~按照之前的约定,今天我就写一下sas宏的一些例子的解析,例子均为在学习中遇到的作业习题,是自己在初步学习sas宏之后写出来的,可能写得并不是最优的解法,若有,希望大家可以和我提出来呀嘻嘻~
话不多说,马上开始今天的sas宏的例子解析,今天我准备了一些例子,顺序也是按照难度来排的,会介绍一下宏的基本用法以及一些常见的错误,希望可以帮助到大家学习~
好了,之前有同学问我的sas代码颜色有什么含义,那我今天就统一解释一下。
/*这种颜色*/ :一般为注释,就是对这一行代码进行解释性说明,不会算入代码运行中;
proc:这种颜色一般为语法主体部分,一般出现在代码开头以及结尾;
output:这种颜色一般为语法中的关键字;
q1_age:这种就是普通代码了,没有什么特别含义,但也是最重要的东西。
例1:使用宏变量,对user表的age进行异常值检查,以1.5倍iqr作为异常值界限, 将含有异常值的记录以SAS数据集单独存储。
proc univariate data=hw1.Q3 noprint;/*proc univariate是sas中用于输出统计量的proc步常用过程*/
var age; /*设置你要统计的变量*/
output out=hw1.range_age /*设置输出数据集*/
q1=q1_age /*统计上界*/
q3=q3_age /*统计下界*/
QRANGE=iqr_age; /*统计iqr,即q3-q1的值*/
run;
/*使用data步定义宏,对q1,q3,iqr进行初始化*/
data _null_;
set hw1.range_age;
call symput('q3',q3_age);
call symput('q1',q1_age);
call symput('iqr',iqr_age);
run;
/*引用宏变量,并将输出结果输出到新数据集q41中*/
data hw1.q41;
set hw1.q3;
if age<&q1-1.5*&iqr|age>&q3+1.5*&iqr
then output;