常用sas语句总结_sas常用语句
常用sas语句总结由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“sas常用语句”。
Engine(引擎)是一种访问架构,SAS系统通过它迅速地对其它数据库管理系统中文件进行读入和写出。
1.LIBNAME语句
1.1解读
定义 SAS 逻辑库。具体地说,它可以
(1)向 SAS 标识 SAS 逻辑库
(2)将引擎与逻辑库关联
(3)让您指定逻辑库的选项
(4)为逻辑库指定逻辑库引用名
通俗得讲,LIBNAME语句把一个libref(库标记名)和一个目录联系起来,使用户可以在SAS语句中使用库标记来指示这个目录。提交该程序时自动引用该 SAS 逻辑库 1.2 语句格式
1、LIBNAME libref ;
2、LIBNAME libref Clear;
3、LIBNAME libref |_ All_ List;三种格式反映了LIBNAME语句的三种用法 选项说明
LibrefEngineSas-Data-LibraryAcce=Readonly|TempClear_All_List
规定逻辑库规定引擎规定主机系统下一个有效的物理地址规定逻辑库为只读或可修改属性清除与库标记的联系列出所有逻辑库的属性在Log窗口列出逻辑库的属性。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;
说明: variable 变量名
$ 跟在变量后面,表明这个变量是字符型变量 start-column 起始列号
end-column 结束列号,如果变量值只包含一列,则可省略
.decimals 如果输入值中没有包含一个隔开整数部分与小数部分的小数点,decimals用来显性的指明小数部分 @ 单尾符 @@ 双尾符
举例说明:input name $ 1-10 pulse 11-13 waist 14-15 gender $ 16;
4.SET 语句
Set语句可以用来读取单个数据集中的数据,也可以用来读取多个数据集中的数据拼接SAS新的数据集。程序为:
DATA 新数据集;
SET 输入数据集1 输入数据集2 ….; Run;如果不适用DROP=和KEEP=选项,在新的数据集中将包含所有旧数据集的变量。
5.DO 循环语句
语句一:
DO WHILE(expreion);...more SAS statements...END;语句二:
DO UNTIL(expreion);...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;...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过程可以读取的数据有Acce数据库、Excel文件和带分隔符的文件。
6.1语法格式
PROC IMPORT
DATAFILE=“filename” | TABLE=“tablename” OUT=SAS-data-set;说明:
DATAFILE=“filename” 用来指定数据文件的位置,如果是Acce则用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 Documentsmyfilesdelimiter.txt”
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 filesdrug1.xls”
out=drug1;
sheet='lab';
getnames=yes;run;6.4 proc import读取数据库表(如Acce)语法格式: PROC IMPORT TABLE= OUT= DBMS= REPLACE;(Data source Statements:)DATABASE= PWD= UID= WGDB= 说明:
DATABASE= 指明数据库存放的路径及名字 UID= 数据库用户名 PWD= 密码 WGDB= 工作组名称 举例:
proc import table=“customers”
out=sasuser.cust
dbms=acce97;
uid=“userid”;
pwd=“mypaword”;
database=“c:myfileseast.mdb”;
wgdb=“c:winntsystem32security.mdb”;run;通常情况下,proc import是可以不掌握的,通过视窗操作可能更方便,特不过用proc import能够更精细的控制。在写import过程的时候,要特别注意分号的位置,从最开始的语法格式那里可以看出,proc import后面的一般选项是连在一起写的,中间用空格隔开,最后才以分号结尾;而数据源选项则每一项都要以分号结束。这些地方往往容易出错。
7.CARDS语句
用于直接输入数据,标志着数据块的开始。格式如下:
CARDS;
数据块;
8.SORT和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中。
11.REG语句
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规定要改变的SAS系统选项。