SAS语言 -- 简介
SAS语言是一种专用的数据管理与分析语言,它提供了一种完善的编程语言。类似于计算机的高级语言,SAS用户只需要熟悉其命令、语句及简单的语法规则就可以做数据管理和分析处理工作。因此,掌握SAS编程技术是学习SAS的关键环节。在SAS中,把大部分常用的复杂数据计算的算法作为标准过程调用,用户仅需要指出过程名及其必要的参数。这一特点使得SAS编程十分简单。
SAS语言 -- SAS语句
一个SAS语句是由SAS关键词,SAS名字,特殊字符串,并以分号(;)结尾,它要求SAS系统执行一种操作或给SAS系统提供信息。
如:
- Data grade ;
- Do i=1 to n;
- Input X Y $10. ;
SAS关键词
许多SAS语句都是以关键词开始并用它识别语句的类型,如DATA,INPUT,PROC和INFILE都被称为关键词。
SAS名字
SAS语句中出现名字地方很多,如变量名、数据集名、格式名、过程名,及作为文件名和库标记的特殊名字。
SAS名字最多可由8个英文字母构成,第一个字符不能是数字,空格和特殊字符$、@和#也不能用于SAS的名字中。另外,SAS保留了一些特殊的变量名并赋于特定的意义,这些变量都是以下划线开头和结尾,如N_表示数据步已执行过的次数。
表达式
是由一系列算符和运算对象形成的一个指令,它被执行后产生一个目标值。运算对象是变量和常数。
表达式分为简单表达式(仅用一个算符)和复合表达式(使用多个算符);如:9;Age<1001;LOG(X);EXP(a);a*b/100等。
SAS常数用来表示固定的值,它或者是一个数字,或者是固定的值,或者是字符串,或者是其它特殊记号。
SAS有五种类型的常数:
①数值常数:就是出现在SAS语句里的数字,完全像通常的数值一样书写,可以包括小数点和负号等;
②字符常数:是由单引号括起来的1到200个字符组成的;
③日期和时间数值常数;
④十六进制数值常数;
⑤十六进制字符常数。
SAS语言 -- SAS算符
比较算符
建立两个量之间的一种关系,并要求SAS确定这种关系是成立不成立。如果它成立,输出的运算结果是1;如果不成立,运算结果为0
算术算符
就是数学运算中常用的五种运算符号
逻辑算符
通常用来连接一系列比较式
运算次序
下面给出复杂表达式运算次序的准则。
①在括号里的表达式先计算。
②较高优先级的运算先被执行。
③对于相同优先级的算符,左边的运算先做。
SAS语言 -- SAS程序
由一系列SAS语句组成一个SAS程序。SAS程序中的语句可分为两类步骤:DATA步和PROC步。这两个步骤是所有SAS程序的模块。通常用DATA步产生SAS数据集,而用PROC步对SAS数据集内的数据进行分析处理并输出结果。PROC步要求SAS从过程中调出一个过程并执行这个过程,通常用SAS数据集作为输入。
- data phones;
- input name$ phone room height;
- cards;
- rebeccah 424 112 1.5648
- carol 450 112 5.6235
- louise 409 110 1.2568
- gina 474 110 1.3652
- mimi 410 106 1.6542
- alice 411 106 1.6985
- brenda 414 106 1.3698
- brenda 414 105 1.8975
- david 438 141 1.6547
- betty 464 141 1.5647
- holly 466 140 1.5624
- ;
- proc print data=phones; run;
SAS语言 -- DATA步
SAS的数据步以DATA语句开始,用于创建和处理数据集。
DATA语句以关键字“data”开始,格式如下:
data 数据集名;
例如:data a.case;将创建在库a中名为case的SAS数据集,语句执行后你可在与库a对应的目录下看到刚刚建立的数据集文件case。
DATA语句所指定的数据集,一般都是以“库名.数据集名”的格式出现的,也可以单独的“数据集名”出现,此时的数据集系统默认为是临时库中的数据集,退出系统后将会被删除
直接输入方式:就是用SAS语句输入数据来产生SAS数据集的过程,一般形式为:
DATA 语句;
Input 语句;
(用于DATA步的其它语句)
Cards;
[数据行]
;
从外部文件读入数据集。数据若已经包含在某个外部文件(文本文件或数据文件)中,可用此方法输入数据到数据集文件中。
在以上介绍的data语句后,写入以下语句:
inFILE ‘外部文件的所在位置及名称’ 选项;
input 变量名1变量名2 …变量名n;
infile语句用于从外部文件读入数据,必须出现在input语句之前。它的功能是指定一个包含原始数据的外部文件。
从已建立的SAS数据集中产生新的数据集。如果用户从已经建立的SAS数据集中抽取部份变量或数据来形成新的SAS数据子集,可在DATA步中通过SET命令来完成。
DATA步语句及其类型
1、文件操作语句
用于输入数据集或者从这个DATA步输出。
文件操作语句语句的作用及意义Data告诉SAS开始DATA步,并开始创建一个SAS数据集 Input描述数据行或外部输入文件上的记录Cards标识数据行的开始Put描述用SAS输出的这些行的格式By规定数据集被分组处理,使用by变量对分组进行定义Set从一个或几个已存在的SAS数据集中读取观察Merge从两个或两个以上的SAS数据集中合并观察为单个观察Inflie识别外部文件,包含DATA步将读入的原始输入数据2、运行语句
使得用户可以创建或修改变量,或者选择一部分观测来创建数据集 。
文件运行语句语句的作用及意义Delete从正被创建的数据集中删除观察 Stop停止产生当前的数据集Where在进入DATA步之前选择观察Output产生新的观察Remove从某个SAS数据集中删除一个观察Replace在相同的位置上替代观察
3、控制语句
对一些确定的观测跳过一些语句,或者改变被执行语句的次序,实现从程序的一部分转移控制到另一部分。
文件控制语句语句的作用及意义Do建立一组语句,它能够作为一个语句去执行End标记一个Do组或Select组结束Select有条件地去执行几个SAS语句中的一个Go to使得SAS跳到本程序步带有标号的语句,并从这里继续执行If then/else有条件地执行一个SAS语句
4、信息语句
给出关于数据集或正被创建的数据集的附加信息,不是执行语句,可以出现在DATA步的任何地方,并且有同样的功能。
文件信息语句语句的作用及意义Array定义一组能够用相同方法处理的变量 Informat对存储变量值规定输入格式Format对输出变量值规定格式Length规定用来存储SAS变量的字节数Label把描述性标签同变量联系起来Drop指出从数据集或分析中被删除的变量Keep指出从数据集或分析中被保留的变量Rename改变数据集中一些变量的名字SAS语言 -- PROC过程步
PROC步总是由PROC语句开始,然后给出运行的SAS过程名字。
例如,运行SORT过程,则使用语句“proc sort;”来开始这个PROC步。
通常PROC步只需要包括一个PROC语句给出运行的过程名字和一个RUN语句。
过程名描述MEANS计算基本统计量 CHART制作次数分布表 次数分布图UNIVARIATE PLOT正态分布检验 PRINT 数 据 输 出 SORT 数 据 排 序 Tabulate制作表格 ANOVA方差分析 GLM协方差分析CORR 相关系数的计算REG直 线 回 归PRINCOMP主 成 分 分 析SAS语言 -- SAS数据集
SAS数据集简介
SAS数据集是关系型结构,分为两个部份:描述部份和数据部份。
描述部份包含了一些关于数据属性的信息即变量名称、类型及次序等信息;
数据部份的结构完全等同于我们一般所理解的数据表,SAS数据值被安排在一个矩阵式的表状结构中,由字段和记录所构成,字段就是统计学中研究的变量,而记录就是每个研究对象的观测。
SAS数据集又包含在SAS数据库的文件集中。SAS数据集是最常用的一种SAS文件类型,SAS数据库还可以包含其它类型的SAS文件
SAS中数据库分为永久性和临时性两种。
永久库:存在于永久库中的数据集是永久存在的(只要你不去删除它);
临时库:临时库中的数据集则在你退出SAS后自动被删除。
在Windows操作系统,SAS数据库以路径为基础的组织方式。为了使用SAS数据库,需要为每个SAS数据库指定一个库标记来识别。这一标记又称库逻辑名,是某个文件所在路径的别名。临时数据库的库标记为WORK,在SAS启动后自动生成,结束SAS后,库中的所有文件都被删除。
临时SAS数据集的建立
当启动SAS后,系统自动建立一个临时数据存储区,用来临时存储运行SAS时建立或调用的SAS数据集,临时数据库的库标记为WORK,在SAS启动后自动生成,结束SAS后,库中的所有文件都被删除。临时数据库的库标记不需要标注,即SAS程序中数据集work.abc与abc的表示含义完全相同。
永久型SAS数据集的建立和保存
SAS启动后自动生成临时数据库的库标记,因而不需要专门进行命名,但当退出系统后临时数据库中的数据集会被自动清除。为了能反复多次使用同一数据集,需建立永久型SAS数据集。实际上,建立永久型SAS数据集,就是将SAS数据集储存在数据库逻辑名对应的路径目录下。
数据集的导入
除了通过数据步创建数据集的方法,SAS还提供了一些其他的方式可以用来读入其他格式的数据文件。SAS可以利用【FILE】菜单上的【Import Data】命令将其他格式的数据文件导入SAS系统,创建SAS自己的数据集。可以导入的数据文件格式有:dBase数据库,EXCEL工作表,LOTUS的数据库,纯文本的数据文件等。
数据集的导出
除了导入其它格式的数据文件,SAS系统也可以导出SAS数据集为其它格式的数据文件。SAS可以利用【FILE】菜单上的【Export Data】命令将SAS数据集导出SAS系统,转换为其它格式的数据文件。同样地,可以导出的数据文件格式有:dBase数据库,EXCEL工作表,LOTUS的数据库,纯文本的数据文件等。
数据集的排序
将SAS数据集中的观测(记录)按一个或多个变量的数值大小进行排序,把结果存放在新的SAS数据集里,或者代替原始数据集,以便其它SAS过程通过使用BY语句可以直接调用该数据集。在对数据集进行合并或更新之前,也必须进行排序。SORT过程能完成对数据集的排序。
数据集的连接
数据集的连接就是把几个数据集纵向连接起来,生成逐个尾部追加的合并数据集,或按一个或多个变量排序的新数据集,此过程在DATA步中通过SET语句来完成。
Set语句从一个或几个已存在的SAS数据集中读取观测值。每一次set语句被执行时,SAS系统读一个观测送到程序数据向量。如果没有其它规定,set语句从输入数据集中读所有变量和所有观测。
数据集的合并
数据的合并是将两个或多个SAS数据集中的观测横向合并成一个新数据集的一个观测。请注意数据集连接和合并的差别:
SAS系统合并观测的方式依赖于是否有BY语句伴随着MERGE语句