资源预览内容
第1页 / 共89页
第2页 / 共89页
第3页 / 共89页
第4页 / 共89页
第5页 / 共89页
第6页 / 共89页
第7页 / 共89页
第8页 / 共89页
第9页 / 共89页
第10页 / 共89页
亲,该文档总共89页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第6章 创建数据集蔡德利 TsaiDelisohu.com 黑龙江八一农垦大学植物科技学院Statistical Analysis System本章主要内容n概述nData Stepn加工数据集nPROC StepStatistical Analysis System概述nSAS对数据的管理n通常,有两种:nSAS数据集(data set)nSAS数据视图(data view )Statistical Analysis System概述Statistical Analysis System概述nSAS数据视图只有描述部分,没有数据 部分,但描述部分包含了足够的信息以找 到保存在其他文件中的数据;n数据视图减少了维护费用。n如果改变了源数据,数据视图将随着改 变。n可由SQL、ACCESS和DATA Step产生。Statistical Analysis System概述nLibname命令n作用:指定库标记。n一般格式:Libname 库标记 文件夹位置 选 项;n例如:指定目录“G:SAS统计分析 SAS”为库标记MySASLibLibname MySASLib G:SAS统计分 析SAS;Statistical Analysis System概述nSAS语言是一种专用的数据管理、分析语言, 它提供了很强的数据操作能力。n表现在n它可以轻易地读入任意复杂格式的输入数据, 并可以对输入的数据进行计算、子集选择、更新、 合并、拆分等操作。n另外,SAS系统还提供了用来访问其它数据库系 统如Sybase、Oracle的接口,访问各种微机用数据 库文件如FoxPro、Excel的接口及向导,并提供了 一个SQL过程来实现数据库查询语言SQL的功能。Statistical Analysis System概述nSAS语言的自编程计算功能主要在数据步 实现。n一个SAS数据步相当于一个单独运行的程 序。n但是,SAS语言又是一个专用数据处理语 言,所以SAS数据步有其他语言所没有的特 点。Statistical Analysis System概述n例如 /* SasProg0601.SAS */ data a;put x= y= z=;input x y;z=x+y;put x= y= z=; cards;10 20100 200 ; run;Statistical Analysis System概述n运行后在Log窗口显示 x=. y=. z=. x=10 y=20 z=30 x=. y=. z=. x=100 y=200 z=300 x=. y=. z=. NOTE: The data set WORK.A has 2 observations and 3 variables. Statistical Analysis System概述n程序的运行流程: 1. DATA语句标志了数据步开始,并指定了数据 步结束时要生成的数据集名字为A(实际是WORK.A )。 2. 第一个PUT语句要输出变量X、Y、Z的值, 但它们还都没有定义,所以显示为三个缺失值。 3. INPUT语句,从CARDS语句后面的数据行中读 取变量X的值10,变量Y的值20。 4. 下一个赋值语 句计算变量Z的值得到30。因 此,LOG 中的第二行输出显示三个变量的值分别 为10、20、30。 Statistical Analysis System概述5. 从CARDS语句开始到空分号行的各行是非执 行的,程序运行到RUN语句,发现这 是本数据步的 最后一个语句,按一般的程序语言的规则,程序到 这里就应该结 束了,但是,SAS是一个专用数据处 理语言,如果按一般语言的规则,程序中的第二行 数据(100 200)就不能被读入。所以,这个程序 运行到RUN语句后,把读入的观测(这是第一号观 测)写入输出数据集, 6. 流程又返回到DATA语句后的第一个可执行语 句开始执行,并先把所有的变量置初值为缺失值 。于是,第一个PUT语句的结果显示三个变量均为 缺失值,而不是上一步的10、20、30。 Statistical Analysis System概述7. INPUT语句又从数据行中读入下一个观测, 把变量X、Y赋值为100、200。读取位置由运行时 设置的一个数据指针指示。然后计算变量Z的值得 300。于是PUT语句输出的X、Y、Z值分别为100、 200、300。 8. 流程跳过CARDS语句到空语句,到数据步结 尾,把第二号观测输 出到数据集。 9. 再返回到数据步开头,把变量值赋初值为 缺失值,所以第一个PUT语句输出的三个变量值为 缺失值。 10. 运行到INPUT语句,应该读 入下一个观测 ,但是查询数据指针发现 已经读完了所有数据, 所以本数据步结束,并把两个观测写入数据集 WORK.A中。Statistical Analysis System概述n从这个例子可以看出SAS数据步程序和普 通程序的一个重大区别:nSAS数据步如果有数据输入,比如用 INPUT、SET、MERGE、UPDATE、MODIFY等语 句读入数据,则数据步中隐含了一个 循环。 数据步因为有这样一个隐含循环,所以也 提供了用来查询某一步是第几次循环的特 殊变量 _N_,它的值为数据步循环计数值 。Statistical Analysis System概述nData Step 流程:Statistical Analysis System概述Statistical Analysis SystemData Stepn第一种方式语法: DATA 数据集名; Input 变量列表; Cards; DATA、INPUT和 CARDS三个关键词缺一不可。 注意:CARDS语句在INPUT语句之后 Statistical Analysis SystemData StepnDATA语句n作用:n标志数据步的开始。 n命名将要创建的SAS数据集。nCARDS语句n作用:n用于直接输入数据,标志着数据块 的开始Statistical Analysis SystemData Stepn直接输入SAS数据:n/* SASProg0602.sas */data temp; input x y; cards; 34 56 78 90 35 67 89 10 23 65 77 45 ; run;SAS默认按列来分隔变量,可是这里只有两个变量, 输成两列数据太长,因此加上,SAS见到这个符 号,在按变量名依次读取完数据后,不是跳到下一 行,而是继续在该行读数据,直至本行结束或到达 分号为止。数据集Work.temp输入变量x,y, 的作用是不换行,连续输入Statistical Analysis SystemData Stepn第二种方式语法: DATA 数据集名;Infile 文件名 Input 变量列表;用INFILE语句指定了 一个外部数据文件,所有 需要输入的数据存放在该 文件中,从而取代了第一 种方式中的CARDS语句及 其下列的一连串数据,当 数据比较多的时候,用第 二种方式可以使程序看上 去显得比较简洁。 注意:INFILE语句在INPUT语句之前 Statistical Analysis SystemData StepnINFILE语句n作用:n确定一个包含原始数据的外部文本文件 。n一般格式:INFILE 外部文件名 options;n选项(options)可以有选择地读取外部 文件中的记录:nFirstOBS=n1表示从第n1条记录开始读取nOBS=n2表示共读取n2条记录Statistical Analysis SystemData Stepn从外部文件读入数据示例:/* SASProg0603.sas */ data temp; Infile G:SAS统计分析 SASDatatemp.dat; input x y; Run;Statistical Analysis SystemData StepnINPUT语句n作用:n读入由语句指定的数据列。 n为相应的数据域定义变量名。 n确定变量的读入模式。n一般格式:INPUT 设定1设定n| ;Statistical Analysis SystemData Step设定的四种格式:设定的四种格式: List:变量名 $:输入格式 Column :变量名 $始列-终列 Formatted :指针 变量名 输入格式 ( 指针:n|+n ) Named :变量名=$始列-终列 输入换行控制:输入换行控制: :不换行等待下一个Input 语句 :形成输出记录时输入也不换行Statistical Analysis SystemData StepnINPUT语句-ListList格式(自由格式)格式(自由格式)INPUT 变量名 $:输入格式变量名 $:输入格式;说明:说明: 源文件中字段间至少有一个空格或特定字符分隔;源文件中字段间至少有一个空格或特定字符分隔; 字段只能按序输入;字段只能按序输入; 缺失值必须用句点(缺失值必须用句点(. .)表示;)表示; 字符变量的值不能含有空格,长度一般不超过字符变量的值不能含有空格,长度一般不超过8 8。Statistical Analysis SystemData Step/* SASProg0604.SAS */ data c9501; input name $ sex $ math Chinese; cards; 李明 男 92 98 张红艺 女 89 106 王思明 男 86 90 张聪 男 98 109 刘颖 女 80 110 ; run;按顺序列出每个观测的各个变 量名,中间用空格分开。变量如果是字符型,需要在变 量名后加一个$符号,$符号可 以与变量直接相连,也可以间 隔一个空格。Statistical Analysis SystemData Step/* SASProg0605.SAS */ data a; input date yymmdd8. sales; format date yymmdd10.; cards; 56-6-13 1100 67.12.15 1200 78 10 2 1300 891001 1400 19960101 1500 20020901 1600 ; run; proc print; run;需要按格式输入,可在变量名 后加格式名,最常用的是输入 日期数据;本例日期占8列,不足用空格 补足;日期在SAS中是按数值存储的 ,要显示日期值,必须设置输 出格式,本例用format语句。Statistical Analysis SystemData Step/* SASProg0606.SAS */ data b; input date yymmdd10. sales; format date yymmdd10.; cards; 56-6-13 1100 67.12.15 1200 78 10 2 1300 891001 1400 19960101 1500 20020901 1600 1956-6-13 1100 1967.12.15 1200 1978 10 2 1300 19891001 1400 19960101 1500 20020901 1600 ; run; proc print; run;YYMMDD六位数的日期YYYYMMDD带世纪格式的日期YYYYMMDD10.带世纪的,中 间有分隔符或无分隔符的日期Statistical Analysis SystemData Step/* SASProg0607.SAS */ data b; input sales date : yymmdd10. ; fo
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号