sas编程 NEW.doc_第1页
sas编程 NEW.doc_第2页
sas编程 NEW.doc_第3页
sas编程 NEW.doc_第4页
sas编程 NEW.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.4.2 指定逻辑库libname mylib e:data;注意:mylib 为逻辑库的名字, e:data为实际文件夹的路径1.4.3 数据步简介1.建立sas数据集data mylib.c200501; input name $ sex $ math chinese;cards;李家富 男 92 98张丽萍 女 89 106王春雷 男 86 90刘 刚 男 98 109张 颍 女 80 110;run;注意:刘刚之间要没空格data ex02;input x ;cards;41 26 38 48 34 55 46 74 32 44;Run;Data dong86; input No score1 score2 score3 ;cards;92101 90 91 89 92102 89 87 78 92103 61 59 67 92201 90 91 87 92205 87 61 56 92202 54 77 59 92203 96 90 91 92204 88 89 85 92206 71 49 56 92208 86 80 87 92212 76 88 90 92207 69 54 55 92210 90 88 88 92211 88 81 82 92209 78 67 65 92301 87 81 85 92302 81 78 74 92303 67 54 61 92304 88 76 75 92305 77 81 80 92306 71 70 65 92104 90 90 91 92307 90 91 93 92308 89 81 88;run;proc print data =mylib.c200501; run;第二种建立方式data dong86a; infile E:datadong86.txt; input No score1 score2 score3 ;run;proc print data = dong86a; run;2.数据集的复制与修改(p22)data mylib.cls; /*建立一个数据*/set c200501; /*从c200501中复制数据*/run;data mylib.c200501; /*产生数据c200501*/set mylib.c200501;tot=math+Chinese; /*加一列数据tot*/run;data mylib.c200501a;set mylib.c200501;if Chinese100 then Chinese=100; /*修改数据,大于100则修改为100分*/run;data mylib.c200501b;set mylib.c200501;keep name tot;#drop sex math; /*#的意思是keep和drop只选择一个留下来运行*/run;data mylib.c200501c;set mylib.c200501;if math90 and Chinese100; /*只保留数学大于90,语文大于100的数据*/run;3.数据集的拆分 (p24)data c200501m c200501f; set c200501; select(sex); when(男) output c200501m; when(女) output c200501f; otherwise put sex= 有错; end; drop sex;run; 4.数据集的合并 (P24)data new;set c200501m c200501f;run;例 现要按变量num合并以下两个SAS数据集 ch.merge1 、ch.merge2 数据集 merge1 数据集 merge2NUM MATH ENGLISH NUM NAME 5 92 80 9 tian xu 9 93 83 6 li hong 6 56 68 7 song binbin 7 65 . 5 he tao 8 82 90 8 wan gjia 10 chen li按要求合并前每个数据集都要按by变量排序。合并所用程序如下:data a ; merge merge1 merge2; by num;run;1.4.4 过程步简介PROC DATA= ; / ; / ; RUN;2. 过程步常用语句(1) VAR语句 VAR语句在很多过程中用来指定分析变量,其格式为:VAR . ; (2) BY语句和CLASS语句 BY语句在过程中一般用来指定一个或几个分类变量,根据这些分类变量值把观测分组,然后对每一组观测分别进行本过程指定的分析。其格式为:BY . ; 在使用带有BY语句的过程步之前一般先用SORT过程对数据集排序。(3) OUTPUT语句OUTPUT OUT = = =.; 其中用OUT=给出了要生成的结果数据集的名字,用“关键字=变量名”的方式指定了输出哪些结果(关键字是如MEANS过程中的MEAN,VAR,STD那样的要输出的结果名),等号后面的变量名指定了这些结果在输出数据集中叫什么名字。(4) WHERE语句 用WHERE语句可以选择输入数据集的一个行子集来进行分析,在WHERE关键字后指定一个条件。其格式为:WHERE ;(5) FORMAT语句和LABEL语句 过程步中的FORMAT语句可以为变量输出规定一个输出格式,比如:proc print data=c200501; format math 9.1 chinese 9.1;run;使得列出的数学、语文成绩宽度占9位,带一位小数。 LABEL语句为变量指定一个临时标签,很多过程可以使用这样的标签。LABEL语句的格式为:LABEL = =.;3. 输出列表过程PRINT PRINT过程是最常用的SAS过程之一,在生成一个数据集之后,如果不是太大,一般都用PRINT过程来列出数据集的内容,这样可以检查变量与值之间的对应是否正确,数据输入是否正确。其语法格式为:PROC PRINT DATA = NOOBS; VAR ; WHERE ;RUN;PROC PRINT DATA = NOOBS; VAR ; WHERE ;RUN; 其中: 1) 在PROC语句中使用“DATA=选项”指定要列表的数据集名;NOOBS选项指定不输出观测号; 2) VAR语句可以指定要列出的变量并指定顺序 3) WHERE语句可以从输入数据集中选一个子集来处理4. 数据排序过程SORT(略) 在SAS过程中用BY语句可以把观测分类进行处理,但在此之前需要先用SORT过程排序。SORT过程可以把数据集按某一个或若干个变量的次序进行排序。其语法格式为:PROC SORT DATA = OUT = ; BY ;RUN;PROC SORT DATA = OUT = ; BY ;RUN; 其中DATA选项指定的数据集为输入数据集,OUT选项指定的数据集为输出数据集。若省略OUT选项,则输出数据集与输出数据集为同一个数据集。 BY语句中在一个变量名前面加上DESCENDING关键字表示此变量的排序是由大到小的。5. 格式化过程FORMAT FORMAT过程可以设定数据的输出格式,对变量的不同值或不同范围的值设定不同的“标签”来显示,其语法格式如下:PROC FORMAT; VALUE = = ;RUN; 其中格式名的命名规则与逻辑库名相同。6. 标题及全程语句 可以指定自己的标题来取代SAS缺省的标题。指定标题的TITLE语句的格式为:TITLE ; 要注意的是,TITLE语句是一个“全程”语句。全程语句与一般语句不同,一般语句必须用在数据步或过程步内,作为数据步或过程步的一部分,而全程语句则既可以用在数据步和过程步内,又可以单独使用(在数据步、过程步外部)。 全程语句的作用一般有持续性,即:全程语句的效果将持续到退出SAS系统或用另一个同样的全程语句来修改它。 另一个全程语句OPTIONS语句可以规定系统运行的一些选择项,比如输出是否每页有页号,是否有日期,输出的行宽,输出每一页的高度(行数),等等。第二章 编程实现描述性统计SAS提供有多个不同的过程来实现统计量的计算,它们在功能范围上有许多的重复,下面介绍用FREQ、MEANS和UNIVARIATE这三个过程来计算简单的描述统计量。 FREQ过程常用来计算分类变量取值的频数,而MEANS和UNIVARIATE过程则对数值型变量计算均值、标准差等统计量。1. FREQ过程 FREQ过程包括多个控制频数输出与检验的语句和选项,格式如下:PROC FREQ DATA = ; TABLES ; FORMAT . . ;RUN; 其中PROC FREQ语句调用FREQ过程,标志FREQ过程的开始; TABLES语句用于创建有关变量所构成的各种表格并进行相应的假设检验和计算,可以多次使用。 例如,统计数据集Mylib.sryzc中变量R_Id和Income频数的代码如下:proc freq data = mylib.sryzc; tables R_Id Income;RUN; 显示结果如图所示。2. MEANS过程(1) 语法格式 MEANS过程的一般格式:PROC MEANS DATA=; VAR ; BY ; CLASS ;RUN; PROC MEANS语句后的选项主要用来指定所要计算的统计量,默认情况下,MEANS过程会给出频数、均数、标准差、最大值和最小值等,其余统计量的计算均需要在选项中指定。 VAR语句引导所要进行分析的所有变量的列表,SAS将对VAR语句所引导的所有变量分别进行描述性统计分析。 BY语句与CLASS语句所指定的分类变量用来进行分组统计,但输出格式不同。 如对数据集Mylib.sryzc中的Income变量计算简单统计量,只要用如下MEANS过程:proc means data = mylib.sryzc; var Income;run; 结果如图2-15所示。(2) 使用统计量关键字列表 在PROC MEANS语句中使用统计量关键字列表:proc means data = mylib.sryzc n mean median p1 p5 p95 p99 q1 q3 max min; var Income;run; 结果如图2-16所示。 可以计算的描述性统计量关键字及其含义见下表。(3) 使用CLASS语句和BY语句 使用CLASS语句和BY语句可以分组计算分析变量的描述统计量值,由CLASS语句和BY语句指定的变量在分析中起分组(类)的作用,被称为分类变量。两个语句的区别是: 使用BY语句时要求数据集须按BY变量排序,使用CLASS语句无此要求。 使用BY语句时输出按BY变量的每个值分别提供一个表,使用CLASS语句则将所有结果排列在一个表之中。 使用BY语句之前先排序,如下代码可以在上例中按变量R_Id分组统计:proc sort data = mylib.sryzc; by R_Id;run;proc means data = mylib.sryzc n mean median p1 p5 p95 p99 q1 q3 max min; var Income; by R_Id;run; 使用CLASS语句分组较为简单,如下代码也可以在上例中按变量R_Id分组统计:proc means data = mylib.sryzc n mean median p1 p5 p95 p99 q1 q3 max min; var Income; class R_Id;RUN;3. UNIVARIATE过程 UNIVARIATE过程的一般格式为:PROC UNIVARIATE DATA = ; VAR ; BY | CLASS ; HISTOGRAM /; OUTPUT OUT = = ;RUN; UNIVARIATE过程和MEANS过程的格式非常相似,相同的语句和选项其含义也相同,所不同的是某些统计量只能在UNIVARIATE过程中计算(如众数),而且UNIVARIATE过程中具有绘图功能。 其中,HISTOGRAM语句用来指示SAS对其后所指定的变量绘制直方图,其后的选项用来指示SAS添加不同类型的拟合图形(如正态分布的分布密度曲线)。输出包括五个部分。 第一部分是矩统计量,各统计量已在2.1.1中作了介绍。 第二部分为基本的位置和分散程度统计量,位置统计量包括均值、中位数、众数,分散程度统计量包括标准差、方差、极差、四分位间距 第三部分为关于均值等于零的三种检验的结果,包括t检验、符号检验和符号秩检验。 第四部分为各个重要的分位数。 第五部分是观测数据的五个最低值和五个最高值。2.4.3 编程绘制统计图SAS可以把存贮在SAS数据集中的数据以图形的方式形象直观地显示出来。在SAS/GRAPH模块的支持下,SAS可以作散点图、曲线图、直方图、扇形图、三维曲面图、等高线图、地图,等等。1. GCHART过程(1) 语法格式 GCHART过程用于绘制直方图、饼形图(扇形图)、三维直方图等表示变量分布的图形。其语法格式为:PROC GCHART DATA = ; /RUN;GCHART过程可以使用的图形关键字及其所绘制的图形类型见表2-5。图形关键字绘制的图形类型图形关键字绘制的图形类型block方块图pie饼形图hbar水平的条形图pie3d三维饼形图hbar3d水平的三维条形图donut环形图vbar竖立的条形图star星形图vbar3d竖立的三维条形图图形关键字后的变量名用以指定进行图形描述时的分组变量,可以是数值型的(此时以各组的组中值为分组的标志),也可以是字符型的。选项比较重要的有: TYPE = 统计量关键字,表示以图形对变量(SUMVAR所指定的变量)的哪一种统计量进行描述,比如频数(FREQ)、均数(MEAN)、总计(SUM)、频数百分比(PCTN)等; SUBGROUP = 变量名(分组变量),指定要进行分组(各组段内再分组)的变量; SUMVAR = 变量名(数值变量),指定要进行统计计算的变量,也就是“TYPE = 统计量关键字”选项中统计量的计算所依据的变量。(2) 画条形图(直方图) 使用VBAR关键字可以画条形图。例如,画出数据集l2_1中x变量的条形图的代码如下:proc gchart data = l2_1; vbar x;run; 结果如图所示。其中绘图用的变量用VBAR语句给出,如果把VBAR改成HBAR则条形方向变为横向。用GCHART绘制的条形图和在INSIGHT中绘制的直方图有所不同,它在横轴标的是区间的中点值,而在INSIGHT中横轴标的是区间的端点值。 可以指定分组的变量,例如在每个区段内再分段,可以用如下代码:proc gchart data =ch.l2_1; vbar x/ subgroup =g;run; 结果如图所示。(3) 画三维条形图 使用BLOCK关键字可以画三维条形图。例如,画出数据集mylib.sryzc中Income变量的三维条形图的代码如下:proc gchart data =ch.l2_1; block x/ group =g;run; 结果如图所示。2. 使用GPLOT过程绘制散点图和连线图 通常用散点图和连线图可以表示: 一个变量随另一个变量的变化; 变量之间的关系; 数据值的分布。(1) GPLOT过程的一般格式PROC GPLOT DATA = ; PLOT * = /; SYMBOLn ;RUN;常用的选项见表2-6。表2-6 PLOT语句的选项选项意义说明FRAM | NOFRAM在图形四周加入或不加入边框缺省为加入CFRAM = 颜色边框内的颜色缺省为白色AUTOHREF(AUTOVEREF)在水平(垂直)轴的每个主刻度处加入水平(垂直)参考线NOAXIS取消坐标轴及相关的图形元素CAXIS = 颜色设定轴的颜色CTEXT = 颜色设定与轴相关字符的颜色HAXIS = 值列举设定水平轴主刻度的值VAXIS = 值列举设定垂直轴主刻度的值SYMBOL语句用来控制表示点的符号和点间的连线。其中n是不同SYMBOL语句的序号,可以是1-99,缺省为1。选项见表2-7。表2-7 SYMBOL语句的选项选项意义取值V = 符号表示点使用的符号plus, x, star, square, diamond, triangle, hash, y, z, paw, point, dot, circleC = 颜色表示点的符号及连线的颜色black, red, green, blue, cyan, magenta, gray, pink, orange, brown, yellowCV =颜色专指点的符号的颜色H = n指名符号的大小单位有:cell, cm, pct, pt, inPOINTLABEL在点的附近表明Y轴变量的值i = 连线方式指明连线的方式none, join, spline, needleCI = 颜色专指连线的颜色L = nn为线型的序号0 空白线,1 - 实线,2 虚线 W = nn表示线的宽度(2) 散点图 绘制家庭总收入对家庭总支出的散点图,代码如下:proc gplot data = ch.l2_1; plot x*y;run; 结果显示了一个GRAPHICS窗口,绘出了以x为纵轴、以y为横轴的散点图(见图)。可以在图中按第三个变量分组画出散点图(如图2-48右),代码如下:proc gplot data =ch.l2_1; plot x*y =g; symbol1 color=black v = star; symbol2 color=blue v = dot

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论