一、SAS简介SAS(StatisticalAnalysisSystem)统计分析系统于1966年由美国NorthCarolina州立大学开始研制,被誉为数据处理和统计分析领域的国际标准软件系统,最初它主要用于农业领域试验的数据管理和分析,所以SAS字母的原意是统计分析系统(StatisticalAnalysisSystem,SAS)。但从推出之日至今,经过近40多年的不断发展和完善,SAS已由最初的统计分析软件,成为一个用来管理、分析数据和编写报告的大型集成应用软件系统,具有完备的数据访问、管理、分析、呈现及应用开发等功能,完全超出了单纯统计应用的功能。因此,目前SAS已不再表示任何含义的首字母缩写。尽管如此,在数据处理和统计分析领域,SAS系统被誉为国际上标准软件系统,目前仍然是世界领先,使用最为广泛的统计软件。它主要包括以下模块:(1)基本模块BaseSAS;(2)统计分析模块SAS/STAT;(3)高级绘图模块SAS/GRAPH;(4)矩阵运算模块SAS/IML;(5)运筹学和线性规划模块SAS/OR;(6)经济预测和时间序列分析模块SAS/ETS等。本课程用的最多的是BaseSAS模块和SAS/STAT模块。二、SAS基本内容介绍1.SAS界面主要窗口:SAS界面有五个主要的SAS窗口,分别是:Explorer窗口、Editor窗口、Log窗口、Output窗口和Results窗口。这些窗口可以帮助我们轻松完成很多最基本的SAS任务。点击窗口条上相应的按钮可将某窗口移至前台,成为当前活动窗口。PROGRAMEDITOR窗口:主要用于打开SAS程序文件(SAS程序文件扩展名为*.sas)、编辑和修改SAS程序、并提交全部或部分SAS程序。根据程序中编码的性质可以显示不同的颜色,并且对SAS语言进行语法检查。在SAS中可同时打开多个Editor窗口进行操作。Log窗口:浏览程序运行信息、错误提示。黑色表示的程序行,兰色表示提示信息,绿色表示警告,红色提示错误。Output窗口:Output窗口主要用于显示提交SAS程序后的运行结果(output文件的扩展名为*.lst)。缺省时,该窗口位于Editor窗口和Log窗口的后面,如果运行程序有结果输出时,该窗口自动移至前台。Explorer窗口:这个窗口主要用于查看和管理所有SAS文件,而且可以对非SAS文件创建快捷方式。它类似Windows操作系统中的资源管理器,在这里可以创建新的库(Libaries)和SAS文件(SASfiles),并且对文件进行移动、复制、粘贴、重命名、删除等等操作。Results窗口:Results窗口主要用于操作和管理提交SAS程序后的输出结果。它的内容与Output窗口的内容一一对应,可以看作是Output窗口内容的名称,可以用它来查看、删除、保存和打印部分或全部结果。缺省时,它位于Explorer窗口的后面,点击窗口条上的Results按钮可将它移至前台。2.程序提交执行方法(1)F3;(2)Run→Submit;(3)使用功能键3.SAS语言基础(1)SAS变量的命名规则。①SAS名长度不能超过32个字符;②第一个字符必须是字母A、B、…、Z或下划线“__”;从第二个字符开始,可以为字母A、B、…、Z,阿拉伯数字0、1、…、9或下划线“__”等;③所有SAS名称可以是大写字母,也可以是小写字母;④空格和特殊字符(如◎#¥%$等)不允许在SAS名中使用。例如:monthclassA1_2B_1990B2B(2)SAS的变量类型。包括字符型和数值型。①字符型:可以包含任意字母、汉字和其它符号,字符型变量需加上“$”以区分字符型变量和数值型变量。②数值型:只能包含数值(数字0-9,正负号,小数点及科学记数法中用的E)(3)SAS程序由语句组成。其语句一般由特定的关键字开始,以“;”结束;但数据流中没有分号;语句中各词之间用空格分隔,空格多少无区别。几乎所有SAS语句都是以SAS关键字开始的:如data,proc,input,cards,model,class,if,keep,set,run等等。赋值语句是个例外。注释语句可以用*开始,或者用/*…*/表示中间内容是注释语句。例1几个SAS语句的例子:dataexample1;inputidname$heightweight;BMI=weight/(height**2);/*赋值语句*/Cards;/*数据流开始*/1Liqin158482Luoxi16755;/*数据流结束*/run;procreg;modely=sexweight;run;其中data,input,cards,run,proc等是SAS关键字;SASexample1是数据集名;id,name,height,weight和BMI是变量名,name是个用$定义的字符变量,其余是数值变量;“=,/,**”属于SAS运算符;Reg是SAS过程名。(4)SAS程序由两种类型的程序步组成。包括数据步(DATA步)+过程步(PROC步)。①数据步:建立数据集并将数据送入数据集。②过程步:调用合适的过程对数据集中数据进行处理。一个SAS程序就是由数据步和过程步的任意组合而成。(5)SAS运算符SAS运算符是一些用作比较、算术运算或逻辑运算的一些符号。常用的SAS运算符包括:算术运算、比较运算、逻辑运算或布尔运算符,最大、最小连接等运算符(表1)。SAS表达式的运算次序和通常的算术运算规则相同,如括号内优先、较高级运算符优先等。表1SAS运算符运算符说明例子算术运算符+加x+y-减x-y*乘x*y/除x/y**平方x**y比较运算符=等于x=y^=不等于x^=y大于ab=大于等于a=b小于ab=小于等于a=b逻辑运算符And/&逻辑与x3andx5;Or/|逻辑或x6ory3;Not/^逻辑非其它最大3<>6:结果为6最小3><6:结果为3||连接A=“mynameis”,B=“XIAOMING”,C=A||B,那么C=“mynameisXIAOMING”(6)常用的SAS语句①DATA语句:[格式]:DATA数据集名;[功能]:标志数据步的开始,并定义所建数据集的名称。例:DATAa;DATAb;②INPUT语句[格式]:INPUT变量名列;[功能]:读入由语句指定的数据列;为相应数据定义变量名;确定变量格式及读入方式。③CARDS语句[格式]:CARDS;数据块;[功能]:引导数据行。④赋值语句[格式]:Z=X+Y;Y=Y+1;[功能]:利用现有变量产生新变量。(7)SAS函数SAS函数是一个独立的子程序,它对0个或多个自变量进行计算后返回一个值,每个函数都有一个关键字名,为了调用一个函数,需要先写出它的函数名,再用括号将0个或多个自变量括起来,跟在函数名后面,表示这个函数对这些自变量执行某种运算。函数一般形式为:函数名(自变量,自变量,…)SAS函数有多种,这里介绍部分常用函数。(1)SAS常用概率密度函数①标准正态分布函数PROBNORM(x)计算服从标准正态分布的随机变量u小于给定x的概率。即p(u<X)。如:y=PROBNORM(-2.58),结果为0.005。②t分布概率函数PROBT(x,df,nc)计算自由度为df,非中心参数为nc的t分布随机变量小于给定值x的事件的概率,当nc=0或不规定这项时,分布为中心分布。如y=probt(0.95),结果为0.975。③F分布概率函数PROBF(x,dfl,df2,nc)计算服从分子自由度为dfl,分母自由度为df2的F分布的随机变量小于给定值x的事件的概率,当分布为中心分布时,nc=0或不规定该项。④X2分布概率函数PROBCHI(x,df,nc)计算服从自由度为df,非中心参数为nc的X2分布的随机变量小于给定值x的事件的概率,如nc没有规定或取为0,那么就是中心X2分布。⑤二项分布概率函数PROBBNML(p,n,m),0≤p≤1,n≥1,0≤m≤n计算率为p,样本例数为n的二项分布,随机变量x≤m的概率。如求p(x=k)的值,可计算probbnml(p,n,k)-probbnml(p,n,k-1)。⑥泊松分布概率函数POISSON(m,n),m≥0,n≥0。计算参数为m的泊松分布的随机变量x≤n的概率。如计算P(x=k)的值,可用Poisson(m,k)-Poisson(m,k-1)。(2)SAS常用分位数函数①正态分布分位数函数PROBIT(p)(0≤p≤1)计算标准正态分布的分位数,是概率函数的PROBNORM的逆函数。如:PROBIT(0.025),结果为-1.96。②t分布的分位数函数TINV(p,df,nc)计算自由度为df,非中心参数为nc的t分布的p分位数,如nc没有规定或取nc=0,就计算中心t分布的p分位数。③F分布的分位数函数FINV(p,df1,df2,nc)计算分子自由度为dfl,分母自由度为df2,非中心参数为nc的F分布的p分位数,如nc没有规定或取nc=0,就计算中心F分布的p分位数。④χ2分布的分位数函数CINV(p,df,nc)计算自由度为df,非中心参数为nc的X2分布的p分位数,如没有规定nc或取nc=0,就计算中心χ2分布的p分位数。(3)其它SAS常用函数见表2。表2其它SAS常用函数函数说明算术函数ABS(x)取x的绝对值SQRT(X)计算X的平方根。MAX(xl,…,xn)求xl,…,xn中的最大值。MIN(xl,┅,xn)求xl,…,xn中的最小值。MOD(x,y)求x/y的余数。如MOD(10,3)=1。MOD(6,2)=0。SIGN(x)当X0时其值为-l;当x>0时其值为l;当X=0时其值为0。如SIGN(3.5)=l,SIGN(-5.4)=-1,SIGN(0)=0。EXP(x)计算e的x次幂。EXP(x)=ex。LOG(x)对自变量x求以e为底的自然对数。LOG2(x)对自变量x求以2为底的对数。LOG10(x)对自变量x求以10为底的对数。截取函数CEIL(x)取≥自变量x的最小整数。如CEIL(5.7)=6,CEIL(-2.3=-2。FLOOR(x)取≤自变量x的最大整数。如FLOOR(6.9)=6,FLOOR(-7.2)=-8。INT(x)取x的整数部分。如INT(5.6)=5,INT(-3.7)=-3。ROUND(x,n)x按n指定的精度取舍入值。如ROUND(73.58,0.l)=73.6。随机数函数UNIFORM(seed)或RANUNI(seed)产生服从均匀分布UNI(0,1)的随机数。NORMAL(seed)或RANNOR(seed)产生服从标准正态分布N(0,l)的随机数。经如下变换:M+S*NORMAL(seed),可得到服从正态分布N(M,S2)的随机数。RANEXP(seed)产生一个参数λ=l的指数分布的随机数。如果Y=RANEXP(seed)/λ,产生参数为λ的指数分布随机数。RANBIN(seed,n,p)产生服从均值np,方差为np(l-p)的二项分布的观测值。RANPOL(seed,λ)产生服从均数为λ的泊松分布的观测值。4.数据的输入与输出(1)SAS数据集的建立①直接输入法:可在editor窗口中编写程序读入数据。如:Dataexam;Inputname$ageweightheight;Cards;Liming2356170Liuhua2560174Zhangwei3065165;则包含姓名(字符型变量)、年龄、体重及身高的数据集exam可生成,并出现在SAS系统的临时工作集Libraries-Work里。②利用外部数据文件建立SAS数据集如外部有一个d:\MySASFiles\test.txt文件,内容为Liming2356170Liuhua2560174Zhangwei3065165则可利用Infile语句从txt文件中将内容导入。Dataexam;Infile’d:\MySASFiles\test.txt’;Inputname$