当前位置:首页 > SAS入门教程
11. IF语句(条件语句)
例:if x=1 then do; x=0; put ‘x=0’; end; else do;
x=1;
put ‘x=1’; end;
/*当条件成立时,执行下面一个DO组*/
/*当条件不成立时,执行下面另一个DO组*/
用在DATA步的信息语句
12. FORMAT语句(格式语句)
规定变量的输出格式。 例:data _null_; a=0; b=1000000.00; format a data7.
b comma16.2;
put a b; run;
程序执行结果在LOG窗口输出:01JUN1960 1,000,000.00;
13. LENGTH语句(长度语句)
定义数据集中变量的名称、类型和长度 例:data new; length a b $10 c d 8; stop;
run;
创建一个新的数据集new。含有四个变量,a和b是字符型,长度为10个字节;c和d是数值型,长度为8个字节。数据集中没有观测。
即使不是用LENGTH语句,DATA步中的任何一个赋值语句左边的变量也会被作为正被创建的数据集中的一个变量被输出到数据集中。 例:data new; length x 8; do I=1 to 5; x=I;
output; end; run;
生成的数据集new中有五个观测和两个变量x、i。
14. LABEL语句(标签语句)
对变量给出标签。这个标签在SAS 数据集中同变量名一起被存贮,而且可以通过许多SAS过程被打印输出。 例:label occdate=’数据日期’ unitname=’分行名称’;
15. DROP语句(删掉变量语句)
用来规定不包含在SAS数据集中的变量。 例:data new(drop=a); set old(drop=b); run; 如果数据集old中含有变量a,b,c,那么数据集new中只含有变量c。
16. KEEP语句(保留变量语句)
用来规定包含在SAS数据集中的变量。 例:data new(keep=a b); set old; run; 不管数据集old中含有几个变量,数据集new中只含有变量a b。
17. RENAME语句(换名语句)
例: data new(rename=(x1=y1 x2=y2)); data new; set old; set old; x1=x1-5; 等价于: rename x1=y1 x2=y2; run; x1=x1-5; run;
因为上面的例子中变量的新名字在输出数据集中才起作用,在当前的DATA步的程序语句中应仍使用老名字。而在下面的例子中,应使用新名字:
data new; set old(rename=(x1=y1 x2=y2)); y1=y1-5; run;
18. RETAIN语句(保留语句)
该语句使得变量值在DATA步从当前这次到下一次重复时被保留。 例:data new; set old; length sum 8; retain sum; if _n_=1 then sum=x; else sum=sum+x; run; 在新的数据集中增加变量sum,sum的值等于第一条观测到当前观测的变量x的值 的累加。如果没有retain语句,那么第一条观测以后的sum值均为缺失值。
第三节 全程语句
全程语句可以用在SAS程序的任何地方。
1. FILENAME语句(文件名语句)和 %INCLUDE语句
FILENAME语句用文件标记指示一个外部文件的全名字(目录加上文件名)。%INCLUDE语句被用来取出SAS语句和数据行,相当于其它语言中的子程序调用。 例:filename count d:\\projects\\develop\\pgm\\count.sas; %include count; /*执行程序d:\\projects\\develop\\pgm\\count.sas */
第四节 PROC步(过程步)
PROC步是用PROC语句开始的一组或几组SAS语句。在PROC步,可以通过过 程的名字来调用过程—一个已经为你写好的程序。下面介绍一些常用的SAS过程:
1. SQL过程(结构查询语言过程)
将用结构化查询语言编写的SQL语句放到SAS系统的PROC SQL语句的后面,不需要 使用RUN语句,当你提交该过程后,SQL语句便被执行。 例:proc sql; create table new as
select x,y,z from old
where x>0;
2. SORT过程(排序过程)
SORT过程常用于将数据集分类排序,以便其他SAS过程通过使用BY语句可以直 接调用它,在对SAS数据集进行合并和更新之前,也必须先进行分类排序。 例:proc sort data=develop.t_accinfo out=project_info nodupkey; by unitid descending projectid;
run;
该过程对数据集develop.t_accinfo先按unitid的升序排列,在每一个unitid组里面再按projectid的降序排列 ,生成数据集project_info ,nodupkey表示删除by值相同的观测。如果没有指定out=数据集,则将排序后的结果输出到原来的数据集中。
3. APPEND过程(附加过程)
该过程将一个SAS数据集的观测附加到另一个SAS数据集的后面。
如果用DATA步去连接两个数据集,SAS系统必须在处理完两个数据集中的所有 观测后再产生一个新的数据集。APPEND步避免处理原始数据集中的数据,直接把新 观测添加到原始数据集的后面。 例:proc append base=old data=new; run; 该过程用于将DATA=数据集中的观测添加到BASE=的数据集中。如果两个数据集中的变量名称或长度不同,要在PROC语句中加FORCE选项。
4. DATASETS过程(数据库管理过程)
该过程用于对SAS数据库中的SAS文件进行列表、拷贝、换名、添加和删除等操 作。
5. CONTENTS过程(内容过程)
该过程提供SAS数据库中关于SAS文件的有关信息。如:文件的名称、类型、创 建时间、修改时间、观测数、变量、索引等。并自动输出到OUTPUT窗口。可以用OUT=数据集将信息输出到一指定的数据集中。
例:proc contents data=develop.t_unitdef out=info; run;
6. FORMAT过程(定义格式过程)
在SAS系统中,用户可以使用PROC FORMAT过程定义自己的格式。各是可以被
共分享92篇相关文档