SAS软件SAS处理流程与指针控制.ppt_第1页
SAS软件SAS处理流程与指针控制.ppt_第2页
SAS软件SAS处理流程与指针控制.ppt_第3页
SAS软件SAS处理流程与指针控制.ppt_第4页
SAS软件SAS处理流程与指针控制.ppt_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1、第24章 SAS处理流程与指针控制,清华大学经管学院 朱世武,SAS处理流程,数据步定义,通过数据步可以实现的功能如下。 创建SAS数据集(SAS数据文件或SAS数据视窗); 读取外部数据文件创建SAS数据集; 通过对现有SAS数据集取子集、合并、修改和更新创建新的SAS数据集; 分析、操作或展示数据; 创建新变量; 产生报告、或将文件存储到硬盘或磁带上; 提取信息; 文件管理。,数据步处理流程,指针控制,当SAS从输入数据中读取数据,并将其读入到输入缓冲区时,用一个指针标记所读数据的位置。INPUT语句提供了三种方式来控制指针运动。,列行指针控制,列指针控制指定变量从哪一列开始读入数据。 行

2、指针控制可以实现如下控制: 将指针移动至下一次记录行; 在INPUT语句中定义每个观测所要读入的记录行数量,或在INFILE语句中使用N=选项设定每个观测所需读入的记录数量。,例24.2 列行指针控制。 data one; input 2 Name $ +1 age ; cards; sara 15 kitty 23 paul 24 ; run; 例中:2表示第一个变量Name从每个观测记录的第二列开始读取数据,在读完Name之后,+1表示此时指针向右相对移动一列读取age的数值。通过列表输入方式的INPUT语句,每读入一个数值之后,指针自动停留在数据后的第二列上(如本例第一个数据行,读完sa

3、ra后,指针已经指到sara后第二列上),所以此时指针只需相对向右一位,就能继续读入下一个变量。,使用行固定说明符,下列情况发生时使用行固定说明符使得指针停留在当前的输入记录行上。 一个数据记录行被多个INPUT语句读入(单尾缀)。 一个数据记录行包含多个观测所需要的值(双尾缀)。 一个数据记录行需要在下一个DATA步的重复过程中再次读入(双尾缀)。,单尾缀,一般来说,数据步中的每个INPUT语句都会将一条新的数据记录行读入输入缓冲区中,若用单尾缀控制,则在同一个重复过程中: 指针位置没有改变。 没有新的记录行被读入到输入缓冲区当中。 下一个INPUT语句会继续读入同一条记录行。 SAS在使用

4、单尾缀时,会在碰到以下情况时释放一条记录行: 一个空的INPUT语句: input; 一个不带单尾缀的input语句; 下一次重复过程开始。,例24.3 单尾缀的作用。 data one; input a b ; /*input语句1*/ input ; /*input语句2*/ input c d ; /*input语句3*/ cards; 1 2 3 4 1 2 3 4 ; run; 上述例子是一个标准组合顺序123 ,得到的结果是,如果是13组合,得到的结果,双尾缀,一般来说,若使用双尾缀,则数据步在进行下一次重复过程时,INPUT语句读入同一条记录行。 在碰到下列情况时,SAS才会将一

5、个记录行释放: 指针移动超过了输入记录的尾端; 空INPUT语句; 在DATA步下一次重复开始时,有一个单尾缀的INPUT语句input ;,例24.4 双尾缀的作用。 data one; input a b ; cards; 1 2 1 2 1 2 1 2 ; run; 例中,每个数据记录行可以完成两次重复过程,当指针移动超过了输入记录的尾端,指针才开始换行。,读完数据后的指针位置,分别用列表方式、列方式、格式化方式读入下一段数据,列表方式: input region $ jansales; 在读完REGION1之后,指针停留在第9列上。 -+-1-+-2-+-3 REGION1 49670

6、 ,格式化方式和列方式 列方式 input region $ 1-7 jansales 12-16; 格式化方式 input region $7. +4 jansales 5.; input region $7. 12 jansales 5.; I NPUT语句控制指针从前7列中读取数据赋给变量REGION,而后指针停留在第8列上。 -+-1-+-2-+-3 REGION1 49670 ,多个数据行构成一个观测,看下面的例子: data list2; infile datalines; input #4 name $ 1-10 #2 age 13-14 #3 team 16 ; datalin

7、es; li 12 1 wang 45 2 zhou 12 3 qian 3 4 zhang 23 5 ren 11 6 wu 1 7 qiu 98 8 ; proc print data=list2; quit;,input #4 name $ 1-10 #2 age 13-14 team 16 ; 对应输出窗口结果,指针超过行的结尾,在使用或+控制指针时,如果指针移动超过数据行的结尾,则自动转到下一次数据记录行的第一列,并将此信息输入到SAS日志中。 如下例: data one; input x +6 y; cards; 1 2 3 4 ; run;/*x=1 y=3*/,指针移到第一列之

8、前,当列指针试图移到第一列之前的位置时,会被限制到第一列。 例24. 5 列指针移到第一列。 data one; input x (A-7) y; cards; 1 ; run;/*x=1 y=1*/ SAS在读完X的值之后,指针回到第一列。x和y有同样的值。,第15章 数据管理,清华大学经管学院 朱世武,SAS系统提供的过程按其用途可分为四大类: 数据管理; 基础统计; 数据呈现; 数据访问。 和任何一种编程语言一样,SAS 系统有一些数据管理过程,用于实现常用的中间操作或数据转换。,本章将介绍的数据管理过程:,数据集排序; 数据集转置; 改变输出地点; 添加观测; 数据库复制。,数据集排序

9、,利用SAS的排序过程可以对数据集中的观测重新排序。 SAS许多和BY配合使用的语句,如对数据集进行合并的语句或更新语句等,使用前必须先对BY变量进行排序。 排序过程句法 PROC SORT ; BY variable-1 variable-n;,PROC SORT语句,PROC SORT ; 选项说明:,其中: 选项FORCE强行实施多余排序。排序并替换原来加索引的或取子集的数据集,即没有规定OUT=选项时,如果没有规定FORCE,就不能对有索引的数据集进行排序和替换。 没有规定OUT=选项时必须使用FORCE的选项有: OBS=系统选项; FIRSTOBS=系统选项; DATA=数据集中的

10、数据集选项WHERS=; PROC SORT 步用WHERE语句。,BY语句,BY variable-1variable-n; PROC SORT中必须使用BY语句,BY语句中可以规定任意多个变量。 BY语句中规定多个变量时,SORT过程首先按第一个变量排序,然后是第二个变量等。 BY语句中可以规定的选项: DESCENDING对变量按下降次序排序。,应用举例,例15.1 按多变量排序。 data a; set ResDat.Idx000001; year=year(date); qtr=qtr(date); month=month(date); proc sort data=a out=b;

11、 by year qtr month; run; 例中,对上证数据Idx000001按年、季和月排序。,例15.2 按单变量降序排列。 proc sort data= ResDat.a600001 out=a; by descending clpr; proc print data=a (obs=3) noobs; var date clpr; run; 例中,按收盘价CLPR的降序排列。,数据集转置,转置就是把数据集的观测变为变量,变量变为观测。利用SAS的转置过程可以对数据集进行转置。,转置过程句法,PROC TRANSPOSE ; BY variable-1 variable-n ; C

12、OPY variable(s); ID variable; IDLABEL variable; VAR variable(s);,语句说明:,PROC TRANSPOSE 语句,PROC TRANSPOSE ; 选项说明:,VAR语句和ID语句,VAR语句 VAR variable-list; VAR语句列出要转置的变量。 没有VAR语句时,则没有列在其它语句里的所有数值变量被转置。,ID语句 ID variable; ID语句规定输入数据集中一个变量。ID变量的值为转置后数据集的变量名。在没有选项LET时,ID变量的值在数据集中只能出现一次,使用BY语句,BY组内只包含最后的ID值。,应用举

13、例,例15.4 ID变量的值为转置后数据集的变量名。 proc transpose data=ResDat.class out=a let; id name; proc print; run; 例中,原数据集CLASS中变量NAME的值为转置后数据集A的变量名,对所有数值变量转置。数据集A中还有一变量_NAME_.,SAS 系统 1 2007年03月07日 星期五 下午09时21分17秒 Obs _NAME_ Alice Barbara Carol Jane Janet Joyce Judy Louise Mary Alfred 1 Age 13.0 13.0 14.0 12.0 15.0 1

14、1.0 14.0 12.0 15.0 14.0 2 Height 56.5 65.3 62.8 59.8 62.5 51.3 64.3 56.3 66.5 69.0 3 Weight 84.0 98.0 102.5 84.5 112.5 50.5 90.0 77.0 112.0 112.5 Obs Henry James Jeffrey John Philip Robert Ronald Thomas William 1 14.0 12.0 13.0 12.0 16 12.0 15 11.0 15.0 2 63.5 57.3 62.5 59.0 72 64.8 67 57.5 66.5 3 1

15、02.5 83.0 84.0 99.5 150 128.0 133 85.0 112.0,例15.5 BY组内最后一个ID值的观测被转置。 proc transpose data=ResDat.class out=a let; id sex; proc print; run; 结果显示:,proc transpose data=ResDat.class out=a let; id sex; by sex; proc print; run; 结果显示:,例15.8 对每个BY组转置。 options nodate pageno=1 linesize=80 pagesize=40; proc tr

16、anspose data=ResDat.fishdata out=fishlength(rename=(col1=Measurement); var length1-length4; by location date; run; proc print data=fishlength noobs; title Fish Length Data for Each Location and Date; run;,Fish Length Data for Each Location and Date 1 Location Date _NAME_ Measurement Cole Pond 02JUN9

17、5 Length1 31 Cole Pond 02JUN95 Length2 32 Cole Pond 02JUN95 Length3 32 Cole Pond 02JUN95 Length4 33 Cole Pond 03JUL95 Length1 33 Cole Pond 03JUL95 Length2 34 Cole Pond 03JUL95 Length3 37 Cole Pond 03JUL95 Length4 32 Cole Pond 04AUG95 Length1 29 ,输出窗口显示,例15.10 对转置后的数据集作统计分析。,options nodate pageno=1 linesize=80 pagesize=40; data split; set ResDat.weights; array s7 s1-s7; subject + 1; do Time=1 to 7; strength=stime; output; end; drop s1-s7; run; proc print data=split(obs=15) noobs; title S

温馨提示

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

评论

0/150

提交评论