常用sas语句总结

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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比较特殊的循环结构,专用于数组,将数组的每一个元素访问一遍。

相关文档
最新文档