SAS语言概述
SAS提供了一种完善的编程语言。类似于计算机的高级语言,SAS用户只需要熟悉其命令、语句及简单的语法规则就可以做数据管理和分析处理工作。因此,掌握SAS编程技术是学习SAS的关键环节。在SAS中,把大部分常用的复杂数据计算的算法作为标准过程调用,用户仅需要指出过程名及其必要的参数。这一特点使得SAS编程十分简单。
一、SAS程序
SAS程序是SAS语句的有序集合。
SAS程序可分为两部分:
1.数据步(DATAStep)
2.过程步(PROCStep)
在一份SAS程序中,通常有一个数据步和一个过程步.有时可能有多个数据步和多个过程步。
数据步是为过程步准备数据的且将准备好的数据放在数据集中,过程步是
把指定数据集中的数据计算处理并输出结果。
二、SAS语句
SAS语句是以SAS关键词开头、后跟SAS名、特殊字符或操作符组成,并且以分号结尾。一个SAS语句规定了一种操作或为系统提供某些信息。
1.SAS关键字
关键字是系统已赋于确定意义的一个单词。在SAS语言里,除了赋值、求和、注释等语句外,多数语句是以其关键字作为开头的。
如DATA、FORMA,PROC、INFILE等都是相应语句的关键字。
2.SAS名
在SAS语句中,可能出现的SAS名有变量名,数据集名,输出格式名,过程名,选择项名,数组名和语句标号名。还有SAS对文件的一种特殊称呼叫逻辑库名和文件逻辑名。SAS名是字母或下划线开头后跟宇母或数宇或下划线的字符串,字符个数不多于八个。空格和特殊宇符(如$,@,#等)不许在SAS名中出现。另外,SAS保留了一些特殊的变量名并赋于特定的意义,这些变量都是以下划线开头和结尾,如N_表示数据步已执行过的次数。
三、语句描述记号
(1)关键字用英文书写,在写程序时,这些词必须严格以给出的拼写形式书写。
(2)[ ]内的项是可选项。
(3)…表示有多个项目
四、SAS数据集
“SAS数据集(DataSet)”是SAS中一种特定的数据文件。它由SAS程序的数据步产生并且作为过程步的输入。数据集是一个数据值的集合。形象地讲,数据集是一个数据值构成的矩形表。它的行叫观测(Observations),列叫变量(Variables)。
五、数据值(DataValues)
数据值是SAS处理的最基本的数据单元。数据值有两种类型:数值型和字符型。
六、观测(obsevat ion)
一行是一个观测。通常,一个观测的多个数据值描述了一个客观实体的多个特征。round函数有几个参数
七、变量(Variables)
变量是用SAS名标识的具有相同性质的数据值的集合。在SAS数据集中,每一列用一个变量标识 ,SAS数据集的一列也称为一个变量。数据集的列数就是该数据集所包含的变量个数。换言之,数据集的一个观察里包含着数据集的所有变量的一个取值。变量表示观察客观实体的一个属性。
八、变量的属性
SAS变量分为两类:数值型与字符型。每个变量都具有长度、输入、输出格式和标号等四种属性。
变量的属性可以经由其首次出现的上下文给出定义,所谓由上下文给出定义是指当变量第一次出现并且是在INPUT、DO、RETAIN等语句中时,它们的属性将被定义。
Sas自动变量:由数据步语句自动创建的。
_n_ :观测序号;
_error_错误信息变量;
_numeric_ 所有数值变量;
_character_所有字符变量;
_all_所有变量;
fisrt.variable同一by组第一个观测;
last.variable同一by组最后一个观测;
九、变量的值
数值型变量的值是数值。数值的范围是:
正负10E-307 正负10E+308
字符型变量是以字符串为其值。一个字符型变量的值最多可达200个字符。
十、变量的格式标号
用LABEL语句可以为变量定义一个标号。这个标号是引号内的任意字符串。字符个数不超过40,字符串还可以是汉字。变量标号的默认值是空格。
标号与变量名一起输出,这样可以提高输出结果的可读性。
十一、SAS程序的书写格式
SAS程序像多数高级语言一样具有灵活的书写格式。
1.空格
SAS语句可以在一行的任何一列开始书写;一行上可以写几个语句;一个语句可以分多行。一般情况下,一个语句中不同的语法单位要用空格分隔,但是对于某些特殊字符,可以不用空格分隔。
由于SAS对空格的数目没有严格的限制,所以建议程序员将SAS程序写成便于阅读的分层嵌入式。
2.注释
用一对/* 与 */符号括起来的字符叫做注释,注释可出现在程序的任何地方.
3.变量的缩写记号
对于变量的缩写记号分两种情形来讨论:
(l)在SAS中每一个变量以其在程序中首次出现的先后次序获得一个序号,因此,在程序中可以用缩写记号来引用这些变量。假设变量x,a,b,c 和k先后依次在程序中出现。那么在这些变量出现以后的语
句中用记号a-k则表示a,b,c和k这四个变量。
(2)在程序中引用的一组变量名字的前部分字符相同,后部分符号是连续的自然数时,也可以用缩写符号引用变量。
例如程序中定义 x1,x2,x3,x4,x5,则可以用记号x1-x5 来引用上述五个变量。
4.SAS函数
像多数高级语言一样,SAS提供了丰富的标准函数。
SAS函数书写格式为:
函数名(参数表)
其中函数名为SAS关键字,参数表给出函数所要求的一个或多个参数。
SAS函数的类型有:
算术、截尾、三角、双曲线、概率、分位数、样本统计、日期时间、特殊函数
5.函数的参数
函数参数可以是变量名,数值或字符常量。
6.函数值
除了个别特殊情况,多数函数值的类型与其参数类型是一致的,数值函数值的默认长度为八个字节,字符函数值的默认长度是200个字符。
函数的几点说明:
(l)函数不能直接用在PUT语句中。
(2)注意函数参数的取值范围,例如对数函数的参数值要大于零等。
(3)除样本统计函数外,多数函数不许以缺值(MissinsValue)为其参数。
(4)对于某些概率函数,若参数选择不当,可能引起不收敛的问题,在这种情况下,函数值为缺值并给出错误信息。
7.算术函数
(l)取X的绝对值:ABS(X)。
(2)取x1,x2,...,xn 中的最小值 MIN(X1,X2,...,XN)
(3)取x1,x2,...,xn 中的最大值 MAX(X1,X2,...,XN)
(4)取以x2为模x1的余: MOD (x1,x2)(5)取 x 的符号:SIGN(X)
(6)X的平方根:SQRT(X)
(7)取数组元素的个数或指定维的下标取值个数。设X为已定义了的数组名,当X为一维数组时,DIM(X)的值为X的元素个数。当X为多维数组时,DIM(X)的值为X的第一维下标取值的个数,DIMn(x)为X的第n维下标取值的个数,其中n为正整数。设已定义了多维数组ARRAYm(3,10,4)m1-m120,则DIM(m)和DIMI(m)的值是3,DIM2(m)的值是10,DIM3(m)的值是4。
8.数学函数
(1)双伽码函数:DIGAMMA(x)
(2)误差函数:ERF(x)
(3)误差函数ERF(X)的补函数:ERFC(X)
(4)EXP(x)是自然对数
(5)全伽码函数:GAMMA(X)
(6)GAMMA(X)的自然对数值:LGAMMA(x)
(7)X的自然对数:LOG(X)
(8)X的常用对数:LOG10(X)
(9)X的以2为底的对数:LOG2(X)
9.截尾函数
(1)大于等干x的最小整数:CEIL(X)。
(2)小干等于x的最大整数:FLOOR()。
(3)截去x的小数部分取整:INT(X)。
(4)以y作为舍入单位,将x四舍五入:ROUND( x ,y),y的默认值为l。
10.三角和双曲函数
(1)X的余弦:COS(X)。
(2)X的正弦:SIN(X)。
(3)X的正切:TAN(X)。(三角函数中的参数x以弧度为单位)(4)X的反余弦:ARCOS(X)。
(5)X的反正弦:ARSIN(X)。
(6)X的反正切:ATAN(X)。
(7)X的双曲余弦:COSH(X)。
(8)X的双曲正弦:SINH(X)。
(9)X的双曲正切:TANH(X)。
11.样本统计函数
(1)校正平方和:CSS(X1,X2,...,XN)
(2)变异系数:CV(X1,X2,...,XN)
(3)平均值:MEAN(X1,X2,...,XN)
(4)极差RANGE(X1,X2,...,XN)
(5)标准差:STD(X1,X2,...,XN)
(6)标准误:STDERR(X1,X2,...,XN)
(7)求和:SUM(X1,X2,...,XN)
(8)计算方差:VAR(X1,X2,...,XN)
12.概率函数
(l)泊松分布的概率值:POISSON ( ,n)
(2)β分布的概率值:PROBBETA(x,a,b )......
13.操作符的执行优先顺序
一个SAS表达式可能同时含有多种多个操作符。
各种操作符的执行优先级顺序规定如下:
规则1:括号内优先
规则2:具有较高优先级的操作先执行,优先级次序如下:
组1:**,正负号,NOT,><,<>
组2:*,/
组3:加法,减法
组 4:字符连接(:或 ! )
组5:<,<= ,>=,>
组6:AND逻辑乘
组7:OR逻辑加
规则3:组号小者优先级高.具有相同优先级的操作依从左到右的原则.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论