第二章SAS编程基础

更新时间:2023-10-27 03:17:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第二章 SAS 编程基础

第一节 常量、变量与观测值

2.1.1 观测值

描述单一整体,如个别人、一个实验动物、一年、一个地区某些特性的一系列数据值称为观测值,又称观察。

2.1.2 变量

给定特性的数据值的集合组成了变量。在SAS数据集中,每一个观测值是由各个变量的数据值组成。在数据集中每一列数据是一个变量。

1.命名

SAS变量名和其他名称如数据集名等的命名规则都相同,它可以多至8个字符长,第一个字符必须是字母(A,B,C,?.,Z),或者是下划线(_),后面的字符可以是数字或下划线。空格不能出现在SAS名中,特殊字符(如$,@,#)也不允许在SAS名中使用。SAS系统保留了一定的名称作为特殊的变量名,这些名称以下划线开始和结尾。如_N_和_ERROR_等。

2.变量特性

SAS变量有两种类型,数值型和字符型。字符型变量在名后用一“$”号来表示。除了他们的类型外,SAS变量还有下列特性:长度、输入格式、输出格式和标记。

变量的长度特性,是指在SAS数据集中用以存储它的每一个值的字节数。缺省长度是8(为了存储长度与缺省值不同的变量,需使用LENGTH语句)。

变量的特性,或者明确地说明,或者在它们首次出现时的上下文中给出定义。例如: DATA A; C='BAD'; PUT C; C='GOOD'; PUT C; RUN;

C在第一次出现时已被定义成字符型变量,长度为3,因此第二次再向c中赋值GOOD时,由于c已被定义成长度为3,故c中只存有‘GOO’。

PUT语句的作用是把变量的值输出到LOG窗口。

变量的其他特性将在后面逐渐介绍。

3.变量清单的简化表示

在SAS程序中定义了完整的变量清单后,就可以在后面许多语

句中使用缩写变量清单形式。

名称形式 缩写 意义

形如:X1,X2,…Xn的带X1-Xn 从X1到Xn的所有变量 有序号的名称

X-A 从X到A的所有变量

形如 X P A * 的名称范

X-NUMERIC-A 从X到A的所有数值变量

X-CHARACTER-A 从X到A的所有字符变量 _NUMERIC _ 所有数值变量

特殊SAS名称 _CHARACTER _ 所有字符变量

_ALL _ 所有变量

例如:

INPUT NAME $ VARl VAR2 VAR3 VAR4 VAR5 VAR6; 也可以写成:

INPUT NAME $ VARl一VAR6;

注意字符型变量NAME不包含在这个缩写清单中,有序号的变量不必全部列出,这些变量要求类型相同,或全是数值型的或全是字符型的。

4.缺项值

当一个变量由于某种原因没有得到(可能没有观测到,或由于数据错误;或由于计算错误),称该值为缺项值(又称缺失值). 在SAS中用“.”表示。

2.1.3 常量

SAS常量是一个数,或一个括在引号中的字符串,或者是一个指示固定值的特殊的标记。

SAS常用3种常量:数值,字符,日期,时间或日期时间值。

常量可被用于赋值、求和、IF、SELECT、RETAIN,PUT和ERROR语句中,或作为特定过程的可选项的值。

1.数值常量

数值常量可为正负整数和小数,对于过大和过小的数则用科学记数法表示。

如:1.785E-9即1.785*10-9,对于数值型量的缺项值用“.”来表示。

2.字符常量

一个字符常量可由1至200个字符组成。例如:姓名Zhangli,性别Male等。字符型缺项值用空格来表示。

3.日期、时间和日期时间常量

用单引号括起日期时间值,后面接着用一个D(DATE)、T(TIME)或DT(DATETIME)来表示其类型。下面是几个例子: .'1JANl980'D .'9:25'T .'9:25:19'T

.'18JAN80:9:27:05'DT

为了将日期、时间或日期时间值赋给变量,应指出变量的输入格式或输出格式:TIME.、DATE.、和DATETIME.。

第二节 SAS函数

SAS函数是一个程序,它对一个或多个参数进行计算后返回一个值。每一个SAS函数有一个关键字名,为了调用一个函数,写出函数名接着是括在括号中的一个或多个要进行计算的参数: 函数名(参数,参数)

当参数多于一个时,参数之间应该用逗号分隔,也可写成如下两种形式之一:

函数(OF 变量1-变量n)

函数(OF 变量1 变量2 变量3)

例如下列形式是正确的:

SUM(OF X1一X100 Yl—Y100) SUM(OF X Y Z)

SUM(X1,X2,X3,X4)

2.2.1 算术函数

ABS(x) 返回x的绝对值

DIM(array) 返回数组中元素个数

MAX(X,Y,…) 返回X,Y?.中的最大值 MIN(X,Y?.) 返回X,Y?.中的最小值 MOD(X,Y) 计算x/y的余项 SIGN(x) 返回参数x的符号或O SQRT(x) 计算x的平方根

还有LBOUND和HBOUND等函数。

2.2.2 数学函数

EXP(x) e的幂

LOG(x) 产生自然对数

LOG2(x) 计算底为2的对数

LOG10(x) 计算底为10的常用对数

DIGAMMA(x) 计算GAMMA函数对数的导数 还有ERF、ERFC、GAMMA、LGAMMA等函数。

2.2.3 三角函数和双曲函数

COS(x) 计算余弦 SIN(x) 计算正弦 TAN(x) 计算正切

还有ARCOS、.ARSIN、ARTAN、COSH、SINH、TANH等函数。

2.2.4 概率函数

PROBBNML(p,n,f) 二项式(BINOMIAL)概率分布函数;

PROBCHI(x,df) 卡方概率分布函数 PROBF(x,ndf,ddf) F分布函数

PROBNORM(x) 标准常规概率分布函数 PROBT(p) STUDENT'S T分布函数

还有POISSON,PROBBETA、PROBGAM、PROHYPR、PROBNEGB等函数。

2.2.5 分位数函数

CINV(p,df,nc) 卡方分布分位数 FINV(p,ndf,ddf,nc) F分布分位数 TINV(p,df,nc) T分布分位数 还有BETAINV、GAMINV、PROBIT等函数。

2.2.6 样本统计函数

MEAN(x,y...) 计算算术均值 STD(x,y,...) 计算标准差 SUM(x,y,...) 计算参数和 VAR(x,y,?.) 计算方差 还有CSS、CV、KURTOSIS,MAX,MIN,N,NMISS,RANGE、SKEWNESS、 STDERR,USS等函数。

2.2.7 随机函数

RANNOR(x) 产生一正态偏差 RANUNI(x) 产生一均匀偏差

还有NORMAL,RABIN,RANCAU、UNIFORM、RANEXP,RANGAM、RANPOI、RANTBL、RANTRI等函数。

2.2.8 字符函数

INDEX(a,b) 求字符串b在字符串a中的位置

LEFT(a) 左对齐一个字符串 LENGTH(a) 返回字符串a的长度。 RIGHT(a) 右对齐一字符串

TRIM(a) 移走字符串尾部的空格 还有BYTE、COLLATE、COMPRESS、INDEXC、RANK、REPEAT,REVERSE、 SCAN、SUBSTR、TRANSLATE、UPCASE,VERIFY等函数。

2.2.9 日期和时间函数

DATE() 返回今天日期作为SAS日期值 DAY(date) 从SAS日期值返回月份中的日数 YEAR(date) 从SAS日期值返回年数

还有DATEJUL、DATEPART、DATETIME、DHMS、HMS、HOUR、INTCK、INTNX、

JULDATE、MDY、MINUTE、MONTHQTR、SECOND、TIME、TIMEPART、TODAY、

WEEKDAY、YYQ等函数。

第三节 SAS操作符

SAS操作符是表示需要作算术计算、比较或者逻辑操作的记号。

2.3.1 算术操作符

算术操作符指出一个要执行的算术计算。算术操作符是: * * 乘方 * 乘 /除 +加 -减

对于一个算术操作符的操作数若为缺项值,结果也为缺项值。

2.3.2 比较操作符

比较操作符要求SAS确定两个数据量间是否存在这种关系。如果不存在(换句话说如果它是假的)其结果值为0。比较操作符是: =或EQ 等于 ^=或NE 不等于 >或GT 大于 <或LT 小于

>=或GE 大于等于 <=或LE 小于等于 对字符值比较也与数值比较一样,比较总是输出一个数值结果(1或0)。字符操作数被从左到右一个字符一个字符地按ASCII码值进行比较。

比较算符主要用于条件语句中,但也可用于赋值语句中,例如:

IF X

C=15*(X=Y);

本文来源:https://www.bwwdw.com/article/odn2.html

Top