做最具实战的
数据科学职业社区

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)。

五、数据值(Data Values)

数据值是SAS处理的最基本的数据单元。数据值有两种类型:数值型和字符型。

六、观测(obsevation)

一行是一个观测。通常,一个观测的多个数据值描述了一个客观实体的多个特征。

七、变量( Variables)

变量是用SAS名标识的具有相同性质的数据值的集合。在SAS数据集中,每一列用一个变量标识 ,SAS数据集的一列也称为一个变量。数据集的列数就是该数据集所包含的变量个数。换言之,数据集的一个观察里包含着数据集的所有变量的一个取值。变量表示观察客观实体的一个属性。

八、变量的属性

SAS变量分为两类:数值型与字符型。每个变量都具有长度、输入、输出格式和标号等四种属性。变量的属性可以经由其首次出现的上下文给出定义,所谓由上下文给出定义是指当变量第一次出现并且是在 INPUT、DO、 RETAIN等语句中时,它们的属性将被定义。

九、变量的值 

数值型变量的值是数值。数值的范围是:

正负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)除样本统计函数外,多数函数不许以缺值(Missins Value)为其参数。

(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为正整数。           设已定义了多维数组 ARRAY m(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:组号小者优先级高.具有相同优先级的操作依从左到右的原则。

注:数据科学网遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏,请联系主编邮箱:admin@idatacamp.com
数据科学 » SAS语言概述
分享到: 更多 (0)

吐槽 1

评论前必须登录!