第二章 Sas语言基本概念.docx

上传人:b****8 文档编号:10229088 上传时间:2023-02-09 格式:DOCX 页数:18 大小:88.47KB
下载 相关 举报
第二章 Sas语言基本概念.docx_第1页
第1页 / 共18页
第二章 Sas语言基本概念.docx_第2页
第2页 / 共18页
第二章 Sas语言基本概念.docx_第3页
第3页 / 共18页
第二章 Sas语言基本概念.docx_第4页
第4页 / 共18页
第二章 Sas语言基本概念.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

第二章 Sas语言基本概念.docx

《第二章 Sas语言基本概念.docx》由会员分享,可在线阅读,更多相关《第二章 Sas语言基本概念.docx(18页珍藏版)》请在冰豆网上搜索。

第二章 Sas语言基本概念.docx

第二章Sas语言基本概念

第二章SAS语言基本概念

§2.1SAS语言概述

SAS提供了一套完善的编程语言。

类似于多数计算机高级语言,使用SAS的用户只需要熟悉其命令、语句及简单的语法规则就可以做数据管理和分析处理工作。

因此,掌握SAS编程技术是学习SAS的关键环节。

在SAS中,把大部分常用的复杂数据计算的算法作为标准过程来调用,用户仅需要指出过程名及其必要的参数。

这一特点使得SAS的编程十分简单。

SAS程序是SAS语句的有序集合。

本书的以后章节中将逐一介绍SAS的主要语句。

如果以程序段的功能将SAS程序划分成多个模块的话,那么,这些模块分为两类:

数据准备模块------数据步(DATAStep)和数据分析处理模块------过程步(PROCStep)。

在一份SAS程序中可能有多个数据步和多个过程步,通常的情形为一个数据步和一个过程步。

图2.1SAS程序中数据流向示意图

数据步的作用是把数据源中的数据作为输入,经过整理加工后输出到一个或多个叫做“SAS数据集(SASDataSet)”的特殊文件中去。

数据源可能是DOS的ASCII码文件,也可能是直接写在SAS源程序中尾随CARDS语句之后用空格分隔的一批数据(数据行),还可能是已经存在的SAS数据集。

在过程步中,可以调用一个或多个标准过程。

过程步是把由数据步建立和产生的数据集中的数据作为输入,经标准过程计算处理后,将结果以清晰的表格或图形方式输出到输出窗口或写入磁盘文件。

粗略地说,数据步是为过程步准备数据的,并且将准备好的数据放在数据集中。

过程步是把指定数据集中的数据经计算处理后并输出结果。

图2.1给出在一个数据步和一个过程步组成的SAS程序中数据流向示意图。

§2.2SAS语句

SAS语句是以SAS关键词开头、后跟SAS名、特殊字符或操作符组成,并且以分号结尾。

一个SAS语句规定了一种操作或为系统提供某些信息。

下面是一些SAS语句的例子:

PUTx$15.;

DATAone;

FORMATvalue1abcd;

PROCMEANSDATA=store.supplyMAXDEC=3;

INFILErawdata;

DOi=1TODIM(eachitem);

key1:

total+1;

在这七个语句中,x,value1,total和i是变量;one和store.supply是数据集名;store是逻辑库名;$15.是输出格式;abcd是格式名;MEANS是一个过程名;DATA=和MAXDEC=是过程MEANS的选项;rawdata是一个文件逻辑名;在DO语句中,DIM()是一个函数名,作为函数DIM()参数的eachitem是一个数组名;key1是一个语句标号;total+1是一个累加语句,这里包含了一个常数1。

2.2.1SAS关键字(SASKeywords)

关键字是系统已赋于确定意义的一个单词。

在SAS的程序中,除了赋值、求和、注释和空等语句外,多数语句是以其关键字作为开头的。

如上例中的PUT、DATA、FORMAT、PROC、INFILE和DO都是相应语句的关键字。

2.2.2SAS名(SASNames)

在SAS语句中,可能出现的SAS名有变量名、数据集名、输出格式名、过程名、选择项名、数组名和语句标号名。

还有SAS对文件的一种特殊称呼叫逻辑库名和文件逻辑名。

SAS名是以字母或下划线开头后跟字母或数字或下划线的字符串,字符个数不多于八个。

空格和特殊字符(如$,@,#等)不许在SAS名中出现。

另外,SAS保留了一些特殊的变量名并赋于特定的意义,这些变量都是以下划线开头和结尾,如_N_表示当前数据步已执行过的次数。

2.2.3本书的语句描述记号

(1)大写英文是关键字,在写程序时,这些词必须严格以给出的拼写形式书写。

(2)小写英文和汉字指定的项目由程序员提供。

(3)[]内的项是可选项。

(4)...表示有多个项目。

§2.3SAS数据集

“SAS数据集(SASDataSet)”是SAS的一种特定的数据文件。

它是由SAS程序的数据步或者交互方式产生的,SAS数据集是过程步的输入。

SAS数据集是一个数据值的集合。

形象的讲,SAS数据集是一个数据值构成的矩形表。

它的行叫观测(Observations),列叫变量(Variables)。

表2.1是SAS数据集的一个直观显示。

表2.1数据集

观测

变量1

变量2

变量3

变量4

...

1

数据值

数据值

数据值

数据值

...

2

数据值

数据值

数据值

数据值

...

3

数据值

数据值

数据值

数据值

...

2.3.1数据值(DataValues)

数据值是SAS处理的最基本的数据单元,在例1.1中不同处理不同盆下测得的每一个含氮量值是一个数据值。

数据值有两种类型:

数值型和字符型。

2.3.2观测(Observations)

数据集的一行是一个观测。

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

2.3.3变量(Variables)

变量是用SAS名标识的具有相同性质的数据值的集合。

在SAS数据集中,每一列用一个变量名标识并且这一列数据值的全体构成该变量值的部分或全体。

SAS数据集的一列也称为一个变量。

数据集的列数就是该数据集所包含的变量个数。

换言之,数据集的一个观测里包含着数据集的所有变量的一个取值。

变量表示观察客观实体的一个属性。

2.3.4SAS数据集存储空间的计算

在SAS中,数据量的大小仅受设备容量的限制。

一个数据集所占用的存储空间可以用如下公式计算:

(218+(V*106))+(Obs*(TVL+4))字节

其中:

V是变量个数;Obs是观测个数;TVL是所有变量的长度之和,以字节为单位。

例如一数据集有10个观测,2个变量,每个变量的长度是8个字节,则这个数据集总的存储空间为(218+(2*106))+(10*(16+4))=630字节

§2.4变量的属性

SAS变量的类型有数值型(NUMERIC)和字符型(CHARACTER)。

变量具有长度、输入输出格式和标号等属性。

变量的属性可以经由其首次出现的上下文给出定义,所谓由上下文给出定义是指当变量第一次出现并且是在INPUT、PUT、ARRAY、赋值、求和、DO、RETAIN和WINDOW等语句中时,它们的属性将被定义。

变量的属性还可以用LENGTH、ATTRIB、FORMAT、INFORMAT和LABEL等专用语句明确给定。

表2.2给出SAS变量的属性、取值及有关定义。

表2.2SAS变量属性

变量属性

可能值

默认值

定义语句

类型

数值或字符

数值

LENGTH/ATTRIB

数值

3-8字节

8字节

LENGTH/ATTRIB

字符

1-200字符

8字符

输入格式

数值

见有关INFORMAT/FORMAT语句的章节

w.

INFORMAT/ATTRIB

字符

$w.

输出格式

数值

w.

FORMAT/ATTRIB

字符

$w.

标号

0-40个字符

空格

LABEL/ATTRIB

2.4.1变量类型(Types)

数值型变量(NUMERIC)的值是数值。

数值的范围是±10-307至±10+308。

字符型变量(CHARACTER)是以字符串为其值的。

一个字符型变量的值最多可达200个字符。

2.4.2变量的长度(Length)

SAS变量长度是指在SAS数据集中存储其每一个值的字节数,默认值是8个字节。

如果不使用默认值,可以用专用语句定义之。

2.4.3变量的格式标号(Labels)

用LABEL语句可以为变量定义一个标号。

这个标号是引号内的任意字符串。

字符个数不超过40,字符串还可以是汉字。

变量标号的默认值是空格。

标号与变量名一起输出,这样可以提高输出结果的可读性。

2.4.4数据缺值(MissingValues)

在实际问题中,经常碰到数据不全或数据缺少的问题。

例如,某一试验中,有个别数据无法或不可能取得。

这些不能得到的数据叫做数据缺值(MissingValues)。

SAS进行数据分析处理时,允许数据缺值。

下面介绍SAS对缺值数据的输入输出的表示。

(1)用INPUT语句自由格式读入数据时,数据源中用一个句点表示一个缺值数据。

用INPUT语句列格式读入数据时,在数据源中用空格表示缺值数据。

(2)在SAS数据集中用句点表示一个缺值数据。

(3)在SAS的各种输出中用一个句点表示一个缺值数据。

§2.5SAS程序的书写格式

SAS程序像多数高级语言一样具有灵活的书写格式。

2.5.1空格

SAS语句可以在一行的任何一列开始书写;一行上可以写几个语句;一个语句可以分成多行。

一般情况下,一个语句中不同的语法单位要用空格分隔,但是对于某些特殊字符,可以不用空格分隔。

例如下面的两个语句都是合法的SAS语句:

t=t+5;

t=t+5;

由于SAS对空格的数目没有严格的限制,所以建议程序员将SAS程序写成便于阅读的分层嵌入式。

2.5.2注释

用一对/*与*/符号括起来的字符叫做注释,注释可以出现在程序的任何地方,只需要用空格和其它语句成份分开。

2.5.3变量的缩写记号

对于变量的缩写记号分两种情形来讨论:

(1)在SAS中每一个变量以其在程序中首次出现的先后次序获得一个序号,因此,在程序中可以用缩写记号来引用这些变量。

假设变量x,a,y,b和k先后依次在程序中出现。

那么在这些变量出现以后的语句中用记号x-k(x与k中间的符号是减号)表示上述五个变量。

a-k则表示a,y,b和k这四个变量。

(2)在程序中引用的一组变量名字的前部分字符相同而后部分符号是连续的自然数时,也可以用缩写符号引用变量。

例如程序中定义了

,则可以用记号

来引用上述五个变量。

对于这种情形,当变量第一次出现(包括定义)时也可以使用缩写记号。

也就是说,在程序中若第一次出现

,那么,就意味着程序中定义了n个变量

§2.6SAS函数

像多数高级语言一样,SAS提供了丰富的标准函数。

SAS函数书写格式为:

函数名(参数表)

其中函数名为SAS关键字,参数表给出函数所要求的一个或多个参数。

SAS函数的类型有:

算术、截尾、三角、双曲线、概率、分位数、样本统计、随机数、字符、日期时间和一些特殊函数。

2.6.1函数的参数

函数参数可以是变量名,数值或字符常量(字符常量是带引号的一串字符)、也可以是一个表达式。

函数参数可以是一个或多个。

多参数函数有如下三种书写形式:

(1)将所有参数列入括号内并用逗号分隔。

(2)参数变量名的尾部是有序整数时,可以写成(OF参数变量1-参数变量n)。

(3)将所有参数列出并用空格分隔,前面冠以OF,即(OF参数变量1参数变量2...参数变量n)。

例2.1设

是函数1的参数。

x,y和z是函数2的参数。

如下书写形式是正确的:

函数1(OF

函数2(x,y,z)

函数3(OFxyz)

而下列书写是错误的:

函数1(

函数2(xyz)

函数3(xyz)

函数1(

2.6.2函数值

除了个别特殊情况,多数函数值的类型与其参数类型是一致的。

数值函数值的默认长度为8个字节,字符函数值的默认长度是200个字符。

2.6.3函数的几点说明

1.函数不能直接用在PUT语句中。

2.注意函数参数的取值范围,例如对数函数的参数值要大于零等。

3.除样本统计函数外,多数函数不许以缺值(MissingValue)为其参数。

4.对于某些概率函数,若参数选择不当,可能引起不收敛的问题,在这种情况下,函数值为缺值并给出错误信息。

2.6.4算术函数

1.取x的绝对值:

ABS(x)。

2.取

中的最大值:

MAX(

)。

3.取

中的最小值:

MIN(

)。

4.取以

为模

的余:

MOD(

)。

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)和DIM1(m)的值是3,DIM2(m)的值是10,DIM3(m)的值是4。

2.6.5数学函数

1.双伽码函数:

DIGAMMA(x),是伽码函数的导数与伽码函数之比:

2.误差函数:

ERF(x),其值为

利用该函数可以求均值为0,标准差为1的正态分布的随机变量小于x的概率。

3.误差函数ERF(x)的补函数:

ERFC(x),其值为1-ERF(x)。

4.EXP(x)表示

,其中e是自然对数的底。

5.全伽码函数:

GAMMA(x),其值为

6.GAMMA(x)的自然对数值:

LGAMMA(x)。

7.x的自然对数:

LOG(x)。

8.x的常用对数:

LOG10(x)。

9.x的以2为底的对数:

LOG2(x)。

2.6.6截尾函数

1.大于等于x的最小整数:

CEIL(x)。

2.小于等于x的最大整数:

FLOOR(x)。

3.截去x的小数部分取整:

INT(x)。

4.以y作为舍入单位,将x四舍五入:

ROUND(x,y),y的默认值为1。

2.6.7三角和双曲函数

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

2.6.8样本统计函数

1.计算

的校正平方和:

CSS(

),其值为

,其中

的平均值。

2.计算

的变异系数:

CV(

),其值为

,S为标准差,

为均值。

3.计算

的平均值:

MEAN(

)。

4.计算

的极差:

RANGE(

)。

5.计算

的标准差:

STD(

)。

6.计算均值的标准误:

STDERR(

)。

7.求和:

SUM(

)。

8.计算方差:

VAR(

)。

2.6.9概率函数

1.泊松分布的概率值:

POISSON(λ,n),计算服从泊松分布的观测值小于n的概率,λ是平均参数值,其中0≤λ,0≤n。

2.β分布的概率值:

PROBBETA(x,a,b),a和b是β分布的形状参数。

其中0≤x≤1与0

3.二项分布概率值:

PROBBNML(p,n,m),求带有参数p和n的二项分布中的观测值小于等于m的概率,p是概率参数,n是自由度。

4.卡方分布的概率值:

PROBCHI(x,df,nc),计算自由度为df,服从卡方分布的随机变量落在给定值x之下的概率。

当nc=0时,计算中心卡方分布,否则nc给出非中心值。

5.F分布概率值:

PROB(x,ndf,ddf,nc),计算分子自由度为ndf,分母自由度为ddf的F分布的随机变量有给定x值的概率。

其中nc的意义同4。

6.

分布的概率值:

PROBGAM(x,a),计算形状数为a的

分布的随机变量落在给定值x之下的概率。

7.超几何分布概率值:

PROBHYPR(nn,k,n,x,or),计算总样本数为nn,边界参数为n和k,机会比率为or的超几何分布的观测值小于等于x的概率。

or的默认值为1,其中

1≤nn,0≤k≤nn,0≤n≤nn,max(0,k+n-nn)≤x≤min(k,n)。

8.负二项分布概率值:

PROBNEGB(p,n,m)计算有参数p和n的负二项分布的观测值小于等于m的概率,二项概率参数是p,n是负二项分布的度数。

其中0≤p≤1,0

9.正态分布概率值:

PROBNORM(x),计算正态(0,1)分布的随机变量落在给定值x之下的概率。

10.t分布函数概率值:

PROBT(x,df,nc),计算自由度为df的满足学生t分布的随机变量小于给定的x值的概率。

nc的值为零时,计算中心t分布,否则nc为非中心值。

SAS语言还提供了分位数计算、随机数产生、财经计算、字符处理、日期时间等多个标准函数,限于篇幅,这里不一一列出,读者可查阅本书附录。

§2.7SAS表达式

SAS表达式是由操作符和圆括号连接各种操作数而成的符号串。

系统处理表达式可得到一个值,这个值可能是一个数或一个字符串或一个缺值。

操作符包括算术运算符、比较符(关系符)、逻辑运算符、字符运算符和一些特殊的操作符;操作数包括各种变量、常量和函数。

下面是一些表达式的例子:

1)n+1

2)5

3)LOG(5)+1

4)INT(year-birthday+1)

5)1-EXP(n/(n+1))

6)score<80

7)dept=“computer”|dept=“physics”

8)a=b=c

2.7.1常量

SAS有数值、字符、日期、时间等多种常量。

(1)数值常量

数值常量是一个十进制数,在书写上与习惯写法一致。

例如,表达式的n+1中的1就是一个数值常量。

数值常量书写时允许使用小数点,负号及E记数法。

下面是几个数的SAS书写对照:

数SAS书写法

3.233.23

-5.6-5.6

18000001.8E6

-0.0000125-1.25E-5

在E计数法中,符号E左侧部分称为数的尾数部分,右边的部分叫指数部分,表示10的幂次。

例如,2E4表示2×104=20000。

在SAS里,大于

的数必须用E记数法表示。

(2)字符常量

用单引号或双引号括起来的不多于200个字符的字符串叫做字符常量。

如果单个单引号作为字符串的组成部分,那么,这个字符串就需要用双引号括之。

例如‘SASlanguage'和“Itiseasytostudy”是两个合法的字符常量。

(3)日期、时间和日期时间常量

这三类常量是将其对应的格式化值用单引号括之并且后跟类型关键字来表示的。

日期值(DATE)表示为ddmmmyyD或‘ddmmmyyyy'D。

其中dd是用整数表示的日;mmm是用英文月份的前三个字母表示月份,例如Jan表示一月,Feb表示二月份等等;yy是数字表示的年份的后两位,用yyyy写出年份的全称。

时间值(TIME)表示为‘hh:

mm:

ss.ss'T或‘hh:

mm:

ss'T。

其中hh为时;mm为分;ss为秒。

日期时间值(DATETIME)表示为‘ddmmmyy:

hh:

mm:

ss.ss'DT。

2.7.2操作符

SAS操作符包括算术运算、比较、逻辑运算和一些特殊的操作符。

这些操作符又分为如下的前缀和插入两类。

(1)算术运算符

算术运算符执行一算术运算操作:

**乘方;*乘法;+正号(前缀)或加号;-负号(前缀)或减号。

(2)比较操作符

比较操作符也叫关系运算符。

系统将判别给定的关系是否存在,若存在(真)则运算结果为1,否则(假)运算结果为0。

比较操作符见表2.3

表2.3比较操作符

关系符

含义

微机SAS中写法

各类电脑通用

=

等于

=

EQ

^=

不等于

^=

NE

>

大于

>

GT

<

小于

<

LT

>=

大于或等于

>=

GE

<=

小于或等于

<=

LE

当比较符两边的量是字符型时,是以其ASCII码值来比较大小的。

当第一个字符相同时就比较其第二个字符,以此类推。

如果特意要比较二者的第一个字符,那么就在比较操作符后加上一个冒号。

(3)逻辑操作符

逻辑操作符共有三个见表2.4

见表2.4逻辑操作符

逻辑符

含义

微机SAS中写法

各类电脑通用

AND

逻辑:

“与”

&

AND

OR

逻辑“或”

|

OR

NOT

逻辑“非”

NOT

逻辑乘:

其两边的量都是1(真)则结果为1,否则为0(假)。

逻辑加:

如果两边的量有一个为1则结果为1,只有两边的量全为0时,其结果才为0。

逻辑非:

其后跟的量为1时而其结果为0(假),反之为1。

(4)其它操作符:

SAS还提供了取最大、最小和连接操作符:

><取两边量中最大者。

<>取两边量中最小者。

||或|或!

将其两边的字符连接起来。

2.7.3操作符的执行优先顺序

一个SAS表达式可能同时含有多种多个操作符,各种操作符的执行优先顺序规定如下:

规则1:

括号内优先

规则2:

具有较高优先级的操作先执行,优先级次序如下:

组1:

**,正负号,NOT,><,<>

组2:

*,/

组3:

加法,减法

组4:

字符连接(|或!

组5:

<,<=,=,^=,>=,>

组6:

AND

组7:

OR

规则3:

组号小者优先级高.具有相同优先级的操作依从左到右的原则。

2.7.4表达式的几点说明

(1)不等式可以连写a

(2)数值操作符连接字符时,系统先将字符量转换成数字量,而后运算。

(3)字符操作符连接数值量时,系统通过使用输出格式BEST12(见输出格式章节)将数值量转换成字符量,而后运算。

(4)赋值语句中的左部变量与表达式的类型不匹配时,先将表达式的值转换成左部变量的类型而后赋值。

(5)在做相等比较时,应注意到由于机器误差带来的微小误差。

适当的使用截尾函数INT和ROUND是一种实用的方法。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1