第一部分SAS Programming总结
- 格式:docx
- 大小:215.20 KB
- 文档页数:17
SAS 程序的特征一个SAS 语句有两个重要的特征:1用一个SAS 的关键词开头,2用一个分号结尾 如:a DATA statement data clinic.admit2;a SET statement a RUN statementrun; a PROC PRINT statement proc print data=clinic.admit2; another RUN statementrun;SAS 程序的排版:Sas 语句是没有排版格式的,那意味着: 1、它们可以从一行的任何位置开始或结束; 2、一个语句有可能横跨几行; 3、几个语句有可能同在一行;(每个步骤加run 是为了方便查看日志)SAS 逻辑库概述根据SAS 逻辑库名分为临时和永久性的存储的:临时储存当你创建文件时不指定一个库的名字或者用WORK 库的时,这个文件是储存在sas 的临时数据库里。
当你结束这个进程时,临时库和里面的文件都被删除永久性储存要永久性储存在一个sas 数据库里,需要指定一个非WORK 库名的库如当你创建一个文件时,指定到Clinic 库名,那么这个文件就被永久储存到sas 的数据库里直到把它删掉两级命名为了让sas 数据永久存储,要用两级命名:libref.filenameSas的命名1、一定要用字母开头(大小写均可)或者用下划线_;2、能够任意组合字母,数字,下划线;(其他符号不行)3、Sas数据集名字,数据集里的变量名大小为1-32个字符,标签描述为1-256个字符;SAS数据集一个sas数据集包含两部分:描述部分和数据部分。
有时sas数据集也会有一个或多个索引,使得sas更有效地之处数据集中的记录。
(1)描述部分(Descriptor Portion)包含了数据集的名字;创建时间;样本数;变量:(2)数据部分(Data portion)涵括了矩形表格里的所有数据:DataportionA.数据部分变量的类型分为字符和数字型a.字符变量能用所有标号,数字变量仅能用0-9,+,-,.,和E(科学计算);b.对于缺失值,字符类型空格代表缺失,数字类型一点来代表缺失;c. 字符最多能容纳32K长度的,长所有数字变量都是8K长度(浮点型);d.输出格式与输入格式(format和informat):提供了许多字符,数字,时间日期等格式,如:COMMA8.2 有效宽度八位(符号也算一位),小数点后两位;输入格式可以去掉数据集中的符号如美元符号和逗号并作为一个标准数字储存;SAS的窗口:几个默认的窗口可用,包括资源管理窗口,日志窗口,输出窗口, 结果窗口,和编辑窗口:两种编辑器的特征:共有的特征:a.打开一个sas程序,包括拖拉窗口,和最小化窗口;b.进入,编辑,执行sas程序;c.用命令行或菜单;d.保存sas程序;e.清除内容;f.标注*text 标注一行/*text*/标注范围不同的:1.Enhanced Editor:a.有色的编辑和对sas程序语法的检查;b.可扩展和折叠的部分;c.记录使用宏d.支持键盘快键方式;e.几级的撤销和反撤销;f.敲击回车键下一行自动排版g.可以设置书签2. Program Editora.重显已提交的语句(用program editor提交sas程序时,窗口里的代码会被自动清除掉);(先进后出原则)b.c.可用区域文档编辑命令:例子:删除00007-00010行:在00007行输入DD,在00010行输入DD,按回车SAS的输出窗口我们可以创建两种类型的输出:一种是sas的传统输出列表;一种是HTML文本;并不是所有的sas程序都会创建输出窗口,有些会打开一些交互式的窗口,如:report 语句:SAS逻辑库创建:当我们删除一个库时,sas不在能进入到这个库里,但是库里面的内容仍旧在我们的操作系统中存在。
定义一个库时,要给它一个库名和路径。
我们也要指定一个引擎(一个sas用户从库里读取和写入的内部指令的集合)Sas可以用外部文件,但是它们并不被sas管理。
一个文件路径有一个可选择的名字用来区分外部文件。
文件快捷路径保存在File Shortcuts文件夹里,我们可以用一个文件路径去打开,查阅和提交一个文件。
当我们删除这个路径时,sas不在能进进入到文件,但是文件还在操作系统里保存着语法:LIBNAME libref engine 'SAS-data-library';1、libref并符合普通命名规则2、Engine 是操作系统所支持的库引擎的名字3、SAS-data-library在系统上具体路径;用libname 语句可以创建逻辑库,而且不但可以查阅sas文件,同时也可以查阅其他软件生成的文件,但要指定需要用的引擎;例子:我们将库Clinic 指派到sas逻辑据库中,地址:D:\Users\Qtr\Reports:libname clinic 'd:\users\qtr\reports';(一般为文件夹)每次结束sas进程时,库会自动删除,我们可以挑选默认每次打开进程都自动打开该库例:我们要指定逻辑库Rptdata和引擎SPSS给G:\Myspss.datlibname rptdata spss 'g:\myspss.dat';(要给到具体文件)SAS逻辑库的查看语法:PROC CONTENTS DATA=SAS-file-specification NODS;RUN;1、SAS-file-specification 指定一整个库或者库里的某个数据集:libref.filename一个sas数据集;libref._ALL_这个库里的所有文件;2、NODS当指定_ALL_后禁止输出每个文件的详细信息_ALL_.(指定了all后才能用nods选项)例子:当我查看整个Mylib库时,我们执行:proc contents data=mylib._all_ nods; run;例子:当我们查看Mylib.Admit数据集时,我们执行:proc contents data=mylib.admit;run;另外:我们可以用proc datasets来查看sas逻辑库和数据集。
PROC CONTENTS <options>; RUN; PROC DATASETS <options>;CONTENTS <options>; QUIT;两种功能有些重叠,不同的是:在proc datasets在data = option 是默认逻辑库的。
在CONTENTS里是默认work或者user逻辑库的。
Datasets是一个交互式的进程,要求有个quit 的语句而不用run。
但是,CONTENTS和在datasets里的CONTENTS的选项是一样的。
例如:proc datasets;contents data=sasuser._all_ nods;quit;proc contents data=sasuser._all_ nods;run;系统选项的设定:语法:OPTIONS options;Options是指一个或多个系统选项被修改,语句只对后面的进程有影响而且对html格式的输出结果没有影响;修改的选项:1、显示日期时间和页数,DATE | NODATE and NUMBER | NONUMBER下面的例子中,页数和日期不会在proc print中输出。
页数也不会在proc freq中输出,但是日期会在proc freq中输出:options nonumber nodate;proc print data=clinic.admit;run;options date;proc freq data=clinic.diabetes;run;2、指定开始页数,PAGENO= n如果不设定开始页数的话,会从第一页开始,例子:options nodate number pageno=3;3、页大小(每页输出行数),PAGESIZE= n,设置每页有多少行,下例每页有15行:options number pagesize=15;4、行的大小(日志和结果的最大宽度),LINESIZE= noptions number linesize=64;5、两位年数代表的始末值,YEARCUTOFF= n(1582-20000),默认开始的年数为1920年,下面例子是设置开始年数为1950年,也就是结束年数为2049年(100年跨度):options yearcutoff=1950;6、指定sas数据集的观测值:FIRSTOBS=n | OBS=n,OBS=加工数据集到第n行;FIRSTOBS=从第n行加工数据集;系统默认FIRSTOBS=1,OBS=max;例子是从第十行打印到第十五行:options firstobs=10 obs=15;proc print data=sasuser.heart;run;7命令语句:INCLUDE 'file-specification'file-specification 是文件的物理路径;例子:打开系统中程序的D:\Programs\Sas\Myprog1.sas:include 'd:\programs\sas\myprog1.sas'命令语句:FILE 'file-specification'file-specification 是文件的物理路径例子:保存程序到系统D:\Programs\Sas\Newprog.Sas 中:file 'd:\programs\sas\newprog.sas'创建输出结果语法:PROC PRINT DATA=SAS-data-set <noob s> <double>;ID variable(s);VAR variable(s);WHERE where-expression;SUM variable(s);BY <DESCENDING> BY-variable-1<...<DESCENDING> <BY-variable-n>><NOTSORTED>;PAGEBY BY-variable;LABEL variable1='label1'variable2='label2'... ;FORMAT variable(s)format-name;RUN;SAS-data-set是要输出结果的文件;var variable(s)是一个或多个变量名(用空格隔开);noobs选项是不现实obs列;double 选项是显示行列距加倍;ID variable(s)是显示时指定一个或多个变量代替OBS的数值(如果var有同样的变量时,则会显示两个);where-expression 指定选择样本的条件;sum variable(s)是显示时对一个或多个变量的求和分别显示出来;BY-variable 是按照之前proc sort分好的组来显示;DESCENDING 是分组是否按降序排,默认升序;NOTSORTED是分组但不排序;PAGEBY BY-variable是只分组后每一组用一页显示;Labels用单引号括着,指定变量显示的名称,最多256个字符并仅限于此步;FORMAT variable(s) format-name;显示变量的格式,仅限于此步;输出的结果是数据集中的所有变量和所有样本;左边有每行的标号;默认以数据集的顺序显示。