常用sas语句总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Engine(引擎)是一种访问架构,SAS系统通过它迅速地对其它数据库管理系统中文件进行读入和写出。
1.LIBNAME语句
1.1解读
定义SAS 逻辑库。具体地说,它可以
(1)向SAS 标识SAS 逻辑库
(2)将引擎与逻辑库关联
(3)让您指定逻辑库的选项
(4)为逻辑库指定逻辑库引用名
通俗得讲,LIBNAME语句把一个libref(库标记名)和一个目录联系起来,使用户可以在SAS语句中使用库标记来指示这个目录。提交该程序时自动引用该SAS 逻辑库
1.2 语句格式
1、LIBNAME libref
<'SAS-data-library'>
2、LIBNAME libref Clear;
3、LIBNAME libref |_ All_ List;
三种格式反映了LIBNAME语句的三种用法
选项说明
2.length语句
SAS变量的基本类型有两种:数值型和字符型。数值型变量在数据集中的存贮一般使用8个字节。SAS的字符型变量缺省的长度是8个英文字符,可以使用LENGTH语句指定变量长度,LENGTH语句一般应出现在定义变量的Input语句之前,格式为:LENGTH 字符型变量名$长度
例如:length name $20 ;
3. input 语句
3.1解读
INPUT语句用于向系统表明如何读入每一条记录。它的主要功能有:读入由语句指定的数据列;为相应
的数据域定义变量名;确定变量的读入模式(共有四种模式:column模式,formatted模式,list模式及named模式)。
input语句执行后,SAS将读取的数据暂时先保存在内存缓冲区,然后执行后面的语句,后面的语句可以对暂存在内存缓冲区中的变量值进行修改,到最后才将整条数据写入数据集,写入数据集的数据就不能在当前data步中再修改。
注意:INFILE语句用于确定一个包含原始数据的外部文件,必须在执行INPUT语句前执行,如果要在程序中直接嵌入数据,就用CARDS语句代替INFILE 语句。
3.2 语句格式(Column模式)
INPUT variable <$> start-column<-end-column><.decimals><@|@@>;
说明:
variable 变量名
$ 跟在变量后面,表明这个变量是字符型变量
start-column 起始列号
end-column 结束列号,如果变量值只包含一列,则可省略
.decimals 如果输入值中没有包含一个隔开整数部分
与小数部分的小数点,decimals用来显性的指明小数部分
@ 单尾符
@@ 双尾符
举例说明:input name $ 1-10 pulse 11-13 waist 14-15 gender $ 16;
4.SET 语句
Set语句可以用来读取单个数据集中的数据,也可以用来读取多个数据集中的数据拼接SAS新的数据集。程序为:
DAT A 新数据集;
SET 输入数据集1 输入数据集2 ….;
Run;
如果不适用DROP=和KEEP=选项,在新的数据集中将包含所有旧数据集的变量。
5.DO 循环语句
语句一:
DO WHILE (expression);
...more SAS statements...
END;
语句二:
DO UNTIL (expression);
...more SAS statements...
END;
语句三:
DO index-variable=start
. . . more SAS statements . . .
END;
例如:
do i=1 to 10;
do i=10 to 0 by -1 while(month='JAN');
语句四:
DO item-1<,…item-n>
. . . more SAS statements . . .
END;
例如:
do count=2,3,5,7,11,13,17;
do month='JAN','FEB','MAR';
do i='01JAN2001'd,'25FEB2001'd,'18APR2001'd;
这个语句是SAS比较特殊的循环结构,可以对枚举的项目依次执行,终止循环就是执行完这些列举的项目。
语句五:
DO over array-name;
. . . more SAS statements . . .
END;
例如:
data test;
input sc01-sc05;
array s sc01-sc05;
do over s;
s= s*100;
end;
cards;
0.95 0.88 0.57 0.90 0.65
;
这个语句也是SAS比较特殊的循环结构,专用于数组,将数组的每一个元素访问一遍。