SAS语言概述
    SAS提供了一种完善的编程语言。类似于计算机的高级语言,SAS用户只需要熟悉其命令、语句及简单的语法规则就可以做数据管理和分析处理工作。因此,掌握SAS编程技术是学习SAS的关键环节。在SAS中,把大部分常用的复杂数据计算的算法作为标准过程调用,用户仅需要指出过程名及其必要的参数。这一特点使得SAS编程十分简单。
一、SAS程序
    SAS程序是SAS语句的有序集合。
    SAS程序可分为两部分:
    1.数据步(DATA Step)
    2.过程步(PROC Step)
    在一份SAS程序中,通常有一个数据步和一个过程步.有时可能有多个数据步和多个过程步。
    数据步是为过程步准备数据的且将准备好的数据放在数据集中,过程步是把指定数据集中的
数据计算处理并输出结果。
二、SAS语句
    SAS语句是以SAS关键词开头、后跟SAS名、特殊字符或操作符组成,并且以分号结尾。一个SAS语句规定了一种操作或为系统提供某些信息。
    1.SAS关键字
    sqrt是什么的缩写关键字是系统已赋于确定意义的一个单词。在SAS语言里,除了赋值、 求和、注释等语句外,多数语句是以其关键字作为开头的。
如DATA、FORMA,PROC、INFILE等都是相应语句的关键字。
    2.SAS名
    在SAS语句中,可能出现的SAS名有变量名,数据集名,输出格式名,过程名,选择项名,数组名和语句标号名。还有SAS对文件的一种特殊称呼叫逻辑库名和文件逻辑名。SAS名是字母或下划线开头后跟宇母或数宇或下划线的字符串,字符个数不多于八个。 空格和特殊宇符(如$,@,#等)不许在SAS名中出现。另外,SAS保留了一些特殊的变量名并赋于特定的意义,这些变量都是以下划线开头和结尾,如N_表示数据步已执行过的次数。
三、语句描述记号
 (1)关键字用英文书写,在写程序时,这些词必须严格以给出的拼写形式书写。
 (2)[ ]内的项是可选项。
 (3)表示有多个项目
四、SAS数据集
    “SAS数据集(Data Set) 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()
      (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小时内删除。