2024年4月26日发(作者:)
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语句的三种用法
选项说明
Libref
Engine
Sas-Data-Library
Access=Readonly|Temp
Clear
_All_
List
规定逻辑库
规定引擎
规定主机系统下一个有效的物理地址
规定逻辑库为只读或可修改属性
清除与库标记的联系
列出所有逻辑库的属性
在Log窗口列出逻辑库的属性。
语句
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;
语句
Set语句可以用来读取单个数据集中的数据,也可以
用来读取多个数据集中的数据拼接SAS新的数据集。
程序为:
DATA 新数据集;
SET 输入数据集1 输入数据集2 ….;
Run;
如果不适用DROP=和KEEP=选项,在新的数据集中
将包含所有旧数据集的变量。
循环语句
语句一:
DO WHILE (expression);
...more
END;
语句二:
DO UNTIL (expression);
...more
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> UNTIL(expression)>; . . . 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比较特殊的循环结构,专用于数 组,将数组的每一个元素访问一遍。 6. IMPROT 语句 import过程可以读取的数据有Access数据库、Excel 文件和带分隔符的文件。 6.1语法格式 PROC IMPORT DATAFILE="filename" | TABLE="tablename" OUT= <(SAS-data-set-options)> 说明: DATAFILE="filename" 用来指定数据文件的位置, 如果是Access则用TABLE="tablename"指定需要读 取的数据表; OUT= 指定输出数据集的名称; DBMS=identifier 指定导入数据表的类型;几个常用 的DBMS选项如下 ACCESS 读取MS ACCESS2000/2002数据 EXCEL 读取Excel2000/2002数据 CSV 读取逗号分隔的文件 DLM 读取分隔符文件,需要用DELIMITER=指 明具体的分隔符 TAB 读取Tab分隔的文件 REPLACE选项替换原来已经存在的数据集,缺省情 况下是不替换,并在LOG窗口中予以提示; 6.2 proc import读取带分隔符的文件 语法格式: PROC IMPORT DATAFILE= OUT= DBMS= REPLACE; (Data source statements:) DATAROW=n ; DELIMITER= ; GETNAMES=YES|NO; 说明: DBMS= 需要指定DLM,逗号分隔文件可省略; DATAROW=n; 指定从数据文件的第几行开始读取, 该选项缺省情况下,如果getnames=yes则从第二行开 始读取,getnames=no从第一行开始读取; DELIMITER=; 指定分隔符; GETNAMES=; 告诉SAS是否将数据文件的第一行 作为变量读取,该选项缺省为yes。 如果第一行是变量名,而该选项为no则会将列为数 值型的第一行读取为缺失值。 当指定getnames=no时,对于DLM文件,则SAS自 动将变量命名为VAR1, VAR2, ...;对于Excel文件, 则SAS自动命名变量为F1, F2, … 举例: proc import datafile="C:My " out=mydata dbms=dlm replace; delimiter='&'; getnames=yes; run; 6.3 proc import读取Excel文件 语法格式: PROC IMPORT DATAFILE= OUT= DBMS= REPLACE; (Data source statements:) SHEET=; GETNAMES= YES|NO; 注:读取Excel时,可以不指定DBMS=选项。 举例: proc import datafile="c:clinic " out=drug1; sheet='lab'; getnames=yes; run; 6.4 proc import读取数据库表(如Access) 语法格式: PROC IMPORT TABLE= OUT= DBMS= REPLACE; (Data source Statements:) DATABASE= PWD= UID= WGDB= 说明: DATABASE= 指明数据库存放的路径及名字 UID= 数据库用户名 PWD= 密码 WGDB= 工作组名称 举例: proc import table="customers" out= dbms=access97; uid="userid"; pwd="mypassword"; database="c:"; wgdb="c:"; run; 通常情况下,proc import是可以不掌握的,通过视窗 操作可能更方便,特不过用proc import能够更精细 的控制。在写import过程的时候,要特别注意分号的 位置,从最开始的语法格式那里可以看出,proc import后面的一般选项是连在一起写的,中间用空格 隔开,最后才以分号结尾;而数据源选项则每一项都 要以分号结束。这些地方往往容易出错。 7. CARDS语句 用于直接输入数据,标志着数据块的开始。格式如下: CARDS; 数据块 ; 和BY语句 SORT语句将指定的数据集按指定变量排序。 使用 BY语句可以使生成的数据集按照某个变量排序,但 输入数据集必须预先按该变量排序。使用PROC SORT语句可以进行排序,一般形式为: PROC SORT DATA=数据集 OUT=排序后的数据集; BY 变量; RUN; e.g. Proc sort date=stockreturn; by firm date; run; 9. 宏 在宏变量前加&来引用宏变量的值。 用一个百分号(%)加宏名称就可以调用该宏。 %macro 宏变量名:定义宏变量 %DO :条件处理至一个匹配的%END出现 %If-%Then /%Else :有条件执行宏 10. MERGE语句 用MERGE语句合并SAS数据集。但是,输入数据 集必须预先按该BY变量排序。语句一般形式为: 式为: DATA 新数据集 ; MERGE 输入数据集1 输入数据集2 … ; BY 变量; RUN; e.g. 下图展示合并数据集A、B 的结果: Data gooddata; Merge stockreturn sample (in=a); By firm; If a=1; Run; 注意:这里merge语句使用了两个选项,当一个SAS 数据步同时读入多个SAS数据集时,可以使用IN=选 项来确定本观测来自哪个数据集, in=选项的一般形式是:SAS-data-set(IN=variable)。 其中,variable是一个临时的数值型变量; Variable=0 表示观测不是来自本数据集; Variable=1表示观测是来自本数据集; 在这里使用IN选项的目的就是把所有来自数据集 sample的观测输出到新数据集gooddata中。 语句 REG过程用来进行回归分析。 在MODEL语句中有许多选项,其中的几个选项如 下: CLM 回归估计值0.95置信区间的上界和下界。 CLI 因变量预报值的0.95置信区间。 P 由输入数据和回归方程计算预报值。输出观 测序号,ID变量(需事先规定ID语句),实际值,预 报值和残差。如果已规定了CLM、CLI或R,选项P 就不需要了。 R 要求残差分析,输出包括选项P的一切内容 外,还有其它一些分析 12. MEANS语句 MEANS对指定的数值变量进行简单的统计描述。 13. OPTIONS语句 OPTIONS语句临时改变SAS系统的选项设置。 改变后的选项设置在以后的SAS会话或作业中 保持有效,直到再次改变它们。 改变SAS系统选项可以用OPTIONS语句,或 用显示管理命令OPTIONS菜单。 语句格式: OPTIONS option-1 <...option-n>; 其中: option规定要改变的SAS系统选项。


发布评论