《SAS基础编程初步教学PPT.ppt》由会员分享,可在线阅读,更多相关《SAS基础编程初步教学PPT.ppt(28页珍藏版)》请在三一办公上搜索。
1、1.3 SAS编程初步1.3.1 SAS程序概述1.3.2 数据步简介1.3.3 过程步简介,1.3.1 SAS程序概述1.数据步与过程步(程序结构)SAS程序中的语句通常属于以下两类程序步之一:数据步(Data step):以DATA语句开头,建立SAS数据集.过程步(Proc step):以PROC语句开头,对数据步所建立的SAS数据集,完成某个特定的计算、分析或呈现工作等.一个SAS程序就是由数据步、过程步或两者的任意组合来构成。每一个程序步通常由若干语句(statements)组成。,2.书写规则 一个SAS语句有两个重要特征:由SAS关键词(keyword)开始;总是以分号“;”结束
2、。,说明:1)SAS语句是自由格式的:一个语句可以由几行组成,可以在任一列开始和结束,几个语句可以在同一行内。SAS每看到一个分号,就将其以前、上一个分号以后的所有字符当作一条语句来处理,而不管它们处在多少个不同的行中(如程序例中的二三两行为一个语句)。2)SAS语句对字母的大小写不敏感,可以根据个人习惯决定字母的大写或小写。3)SAS语句中的词之间用空格或特殊符号分隔。,3.SAS程序中的注释 在SAS程序中可以加入注释,其作用是对程序进行说明,可起到便于理解和阅读的作用,运行时不被执行。注释的书写格式有两种:1)用/*和*/在两端界定注释,这种注释一般出现在命令之后,可以占多行。另一种注释
3、是把以星号开头的行作为注释。一般出现在命令之前。下面是一个注释的例子:data c200501;/*生成2005级1班考试成绩的数据集*/*生成2005级1班考试成绩的数据集 data c200501;,4.SAS程序的提交 SAS程序在Editor窗口中编写,欲使SAS运行所编写的程序,就需要“提交(submit)”程序:F8键或选择菜单项“Run”“Submit”或点击。每一个欲运行的数据步或过程步程序应以RUN语句结束,否则,不会被执行。执行的结果根据SAS程序的不同而有所不同:通常运行的程序包括过程步的话,它们会创建报表形式的输出(Output窗口)。有些过程步执行诸如排序或数据处理过
4、程,除了在Log窗中的记录之外,不产生可见的输出结果。,5.基本的SAS程序例,data c200501;input name$sex$math chinese;cards;李家富 男 92 98张丽萍 女 89 106王春雷 男 86 90刘刚 男 98 109张颍 女 80 110;proc print data=c200501;proc means data=c200501 mean;var math chinese;run;,程序提交SAS系统执行后 1.信息记录显示在LOG窗口;(显示所做程序的信息,出错信息等)2.过程步的执行结果输出在 OUTPUT窗口。,例1.,6.基本的SAS
5、程序例,The SAS System 13:44 Monday,May 5,2008 1 Obs name sex math chinese 1 李家富 男 92 98 2 张丽萍 女 89 106 3 王春雷 男 86 90 4 刘刚 男 98 109 5 张颍 女 80 110,程序提交后OUTPUT窗口显示如下:,The MEANS Procedure 2Variable Mean-math 89.0000000chinese 102.6000000-,PRINT过程步输出结果,MEANS过程步输出结果,1.3.2 数据步简介输入数据的方式 利用数据步建立SAS数据集,其输入数据的方式为
6、:在定义变量名语句之后将数据进行排列;数据步一般语法为:,DATA 数据集名;INPUT 变量名1 变量名2 变量名k;CARDS;d11 d12 d1kd21 d22 d2k 数据行.;RUN;,data f2005;input number name$;cards;200541001 zhao 200541002 qian 200541003 sun200541004 li;run;,例如:,一、数据步语句1.DATA语句(给SAS数据集起名,产生SAS数据文件)一般形式:,DATA 数据集名;,数据集名 若使用一阶的命名方式,如前例中DATA c200501;,则产出数据文件Work.c
7、200501,是暂存性的SAS数据文件,在关闭SAS系统时,自动被删除.若使用二阶的命名方式,如 DATA exec.c200501;,则产出永久性的SAS数据文件exec.c200501,存储于逻辑库exec中,在关闭SAS系统时不会被删除.,DATA语句中使用 数据集选项 举例:1.data one(drop=y);/*在sas数据集one中去掉变量y*/2.data one(keep=x1 x2);/*在sas数据集one中只保留变量x1与x2*/3.data one(rename=(x1=u x2=v);/*把one中变量x1改名为u,x2改名为v*/,临时逻辑库,2.INPUT语句(
8、定义变量名及变量的类型,指定位置或排列情况),以下介绍input语句的书写格式自由格式输入法的一般形式:,INPUT 变量名 变量名;,对字符型变量必要,例2,data one input name$sex$phone room;cards;tan m 13976485606 401 liu f 13637682409 203 zao m 13026576208 301 wang m 13976853241 301 li f 13056384762 204;run;,INPUT 变量名 变量名;,自由格式输入法(不用双尾符)读数据时,在一行中多余的变量值会被弃掉,如缺少接着读下一行.,双尾符在
9、input语句的最后位置时,在一行中一个记录(观测)以外的变量值不会被弃掉而是(作为下一个记录)接着读.换句话说,输入数据时一行里可以输入多个记录。,考察用双尾符和不用双尾符时输出结果差异?,(双尾符),DATA ex;INPUT x y;CARDS;1 2 3 4 5 6 7 8 9 10;proc print;run;,原数据x y24689 10,不用双尾符时系统运行结果:Obs x y 1 22 4 53 7 8,例4.,DATA语句:,DATA 数据集名;,INPUT 变量名;,自由格式输入法的一般形式:,INPUT语句:,3.CARDS 语句(写在数据行之前,一定要与input语句
10、配合使用),CARDS;数据行;,CARDS语句必须是DATA步的最后一个语句,后面的每个数据行长度为80列.当遇到某行开头有分号;时,SAS系统确认是数据行结束.,数据行cards 语句之后根据input语句的格式输入数据行,每个记录应与input语句中变量名一一对应.,1.3.3过程步简介 过程步对数据步所建立的SAS数据集,完成某个特定的计算、分析或呈现工作等。1.SAS过程步的一般形式,PROC 过程名;RUN;,例如,PROC print DATA=c200501;RUN;,2.过程步常用语句VAR语句、BY语句、CLASS语句、OUTPUT语句。(1)VAR语句VAR语句在很多过程
11、中用来指定分析变量,其格式为:,VAR 变量名1 变量名2.变量名n;,proc PRINT data=c200501;var sex math;run;proc MEANS data=c200501;var math;run;,例如:,(2)BY语句和CLASS语句,BY语句在过程中一般用来指定一个或几个分类变量,根据这些分类变量值把观测分组,然后对每一组观测 分别进行本过程指定的分析。其格式为:,BY 变量名1 变量名2.变量名n;,在使用带有BY语句的过程步之前一般先用SORT过程对数据集按BY变量排序。有些过程步可使用CLASS语句指定分类变量,此时不需要事先按分类变量排序。,例如:,
12、proc sort data=c200501;by sex;run;proc print data=c200501;by sex;run;,(3)OUTPUT语句,OUTPUT OUT=新数据集名;,其中用OUT=给出要生成的结果数据集的名字,用“关键字=变量名”的方式指定输出哪些结果(关键字是如MEANS 过程中的MEAN,VAR,STD那样的要输出的结果名),等号后面的变量名是这些结果在输出数据集中用户给的名字。,例如:,proc means data=c200501;var math;output out=c2005mean mean=junzhi;run;proc print data
13、=c2005mean;run;,OUTPUT语句用来给出运行结果的输出数据集名,其格式为:,SAS过程中常有的语句,(1)Proc:指定使用的SAS过程;(2)Var:规定要分析的变量列表;(3)model:规定在模型中的因变量与自变量;(4)weigh:规定观察值相应权数(重要性);(5)Freq:规定观察值出现的频数(次数);,(6)ID:规定一个或几个变量,它们的值在打印输出中用来代替观察号;(7)Class:在分析中识别分类变量;(8)By:对由By定义的几组观测值分别分析;(9)Output:给出该过程产生的输出数据集的信息;(10)Format:规定输出变量值格式;(11)Labe
14、l:把说明性标记同变量名联系起来;,3.两个基本SAS过程:,PRINT过程(打印数据集.在output 窗上的打印)SORT过程(数据集排序),数据步(Data step)只是建立SAS数据集,统计量的计算、分析、作图、输出报表等工作都需要通过过程步(Proc step)进行。,1)打印过程 PRINT其语法格式:,例3.(1)输出SAS数据集c200501,但不打印观测序号:,(2)只打印c200501中部分变量name和math:,proc PRINT data=c200501;var name math;run;,proc PRINT data=c200501 NOOBS;run;,(
15、3)打印c200501,其中变量名取临时标签:Name:姓名;sex:性别;math:数学;chineses:中文。,proc PRINT data=c200501 LABEL;label name=姓名 sex=性别 math=数学 chineses=中文;run;,PROC PRINT;/*指定要列出的变量并指定顺序*/*输出指定变量的所有观测之和*/*可以选一个子集来列出*/RUN;,给变量附加标签的选项,不打印观测序号的选项,proc print data=c200501;where sex=男;run;,PROC PRINT;/*指定要列出的变量并指定顺序*/*输出指定变量的所有观测
16、之和*/*可以选一个子集来列出*/RUN;,PROC PRINT DATA=c200501 NOOBS;SUM math;RUN;,(4)输出c200501中变量math观测值的总和:,(5)输出c200501中男生的数据:,输出结果,2)数据排序过程 SORT 在SAS过程中用BY语句可以把观测分类后进行处理,但在此之前需要先用SORT过程排序。SORT过程可以把数据集按某一个或若干个变量的次序进行排序。其语法格式为:,PROC SORT;BY 要排序的变量名;RUN;,如用此选项按降序排列,否则按升序排列,proc sort data=c200501;by sex;run;proc print data=c200501;by sex;run;,在print过程步要用by语句按性别(sex)分类打印,即男女生分别打印。此时,须先用sort过程按性别(sex)排序。,例如,例4,PROC SORT;BY 要排序的变量名;RUN;,data two;input x$y z;cards;a 4 9 b 9 12 b 5 3 a 2 6;run;,/*要按x的升序排序*/proc sort data=two;by x;run;/*要按y的降序排序*/proc sort data=two;by descending y;run;,SAS的常用过程,