系统和数据分析建立SAS系统的数据集DATASTEP_第1页
系统和数据分析建立SAS系统的数据集DATASTEP_第2页
系统和数据分析建立SAS系统的数据集DATASTEP_第3页
系统和数据分析建立SAS系统的数据集DATASTEP_第4页
系统和数据分析建立SAS系统的数据集DATASTEP_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、第八课 建立SAS系统的数据集 (DATA STEP)用户用SAS数据步(DATA STEP)创建一个数据集的方法,与前两种SAS/ASSIST和SAS/FSP创建一个数据集的方法相比,DATA STEP是一种非交互式的全部编程实现的方法。这种方法能把多样的、复杂的外部文件数据格式通过程序语句的控制转换为我们所需的SAS数据集。一、 DATA程序步的三个主要步骤为了从外部原始数据文件得到SAS数据集,DATA程序步的三个主要步骤为:l 启动一个数据步,命名将要创建的数据集(使用DATA语句)l 确定要读入的外部文件(使用INFILE语句)l 描述如何读入每一条记录(使用INPUT语句)如果需要

2、在程序中直接嵌入数据,第二步用CARDS语句代替INFILE语句。所对应的一般程序结构如下:Data所要创建的数据集名;Infile 读取的外部文件名 <FIRSTOBS=开始读入的行><OBS=结束行> ;Input 变量1 读入模式 变量2 读入模式;Run;此程序结构很容易被错误理解为顺序结构,其实它的内部执行结构是一种循环结构。如图8.1所示是它执行过程的程序流程图。图8.1 执行DATA步时的内部循环过程PDV(Program Data Vector)称为程序数据向量,它是根据DATA步中的INPUT语句所确定的变量和变量的读入模式来创建的,假设INPUT语句

3、中各变量的长度为 name $1-8 、sex $1-2 、bdate 1-8 、age 1-3 、height 1-6、 weight 1-6 、income 1-8、 sdate 1-6 ,所创建的一个PDV 如下表:namesexbdateageheightweightincomesdate82836686整个DATA步程序执行过程中,涉及到:l 一个存放外部文件记录的输入缓冲区l 一个存放当前观测的PDV向量l 一个外部文件记录指针l 一个程序指针l 一个SAS数据集观测指针如图8.2所示。图8.2 文件记录指针、程序指针、观测指针二、 读入模式确定变量的读入模式共有四种:l colu

4、mn模式l formatted模式l list模式l named模式我们在这里将介绍三种主要的column模式、formatted模式和list模式。1. Column模式Column模式适用于读入数据固定在某些列中或数据中只包含标准的字符和数字。在INPUT语句中的一般使用形式如下:Input变量1 <$> 开始列<-结束列><.小数位> 变量2;变量后不带$符号表示此变量读取数字。例如,我们在NOTEPAD记事本程序中输入如图8.3所示的内容,操作如下:l 在Windows桌面上的开始菜单中选择l 程序/附件/记事本打开NOTEPAD程序方法l 并以Te

5、stdata.dat文件名存入到D:sasdatamydir目录下,作为一个我们用来实验的外部文件图8.3 用NOTEPAD程序创建外部文件相应地,在SAS系统的PROGRAM EDITOR中提交下面程序:Datatestd1;Infiled:sasdatamydirtestdata.datfirstobs=2 obs=4;Inputcode $ 1-8 sex $ 9 bdate $ 10-16 income 17-23 .2 ;Proc print data=testd1;Run ;上面的程序的数据步在临时库WORK中创建了SAS数据集work.testd1,而过程步PRINT则显示该数据

6、集,在OUTPUT窗口中显示的运行结果如图8.4所示。图8.4 用Column模式读入外部文件后的SAS数据集2. Formatted模式Formatted输入模式适合于含有不标准数据的文件,是一种更常用的输入模式。它有一根指针来先定位输入数据的开始位置,输入格式放在相应变量之后,输入格式指出了数据的类型和取值的宽度。它有以下两种格式:格式一:Input <指针控制> 变量1输入格式 <|> ;格式二:Input <指针控制> (变量表) (输入格式表) <|> ;<|>是行固定说明符,可选项。l 单尾符作用是为了执行下一条INPUT

7、语句时,仍然把指针保持在当前输入的记录上。用于一个数据行用多条INPUT语句读取数据。l 双尾符作用是为了执行下一条INPUT语句时,甚至在DATA步重复执行时,仍然把指针保持在当前输入的记录上。用于一个数据行含有多条观测值时读取数据。行固定说明符也适用于Column模式。(1) 使用单尾符例如,对外部文件Testdata.dat也可以采用多条INPUT语句读取数据,DATA步程序如下:Data testd2 ;Infiled:sasdatamydirtestdata.dat;Inputcode $ 1-8 sex $ 9 ;Inputbdate $ 10-16 income $17-23 .

8、2 ; Proc printdata=testd2 ;Run ;(2) 使用双尾符如果外部文件testdata.dat中的四条记录数据不是按四行而是按一行的形式存放的,DATA步程序如下:Datatestd2;Infiled:sasdatamydirtestdata.dat;Inputcode $ 1-8 sex $ 9 bdate $ 10-16 income $17-23 .2 ;Proc printdata=testd2 ;Run ;(3) 使用指针控制指针控制可以把指针在行及列中的缺省位置当前行第一列重新定位,使INPUT语句知道从哪行哪列开始读取数据。下表列出了可以同INPUT语句一

9、起使用的两种类型的指针控制。指针控制相对位置绝对位置列指针控制+表达式值表达式值行指针控制/#表达式值例如,下面的DATA步程序是把列指针定位在第10列。Datatestd3;Infiled:sasdatamydirtestdata.dat; a=2 ;b=5 ;Input(a*b) bdate $ 7. ;Proc printdata=testd3;Run ;OUTPUT窗口中运行结果如图8.5所示。图8.5 用列指针控制读入外部文件后的SAS数据集“/”表示行指针移到下一行的第一列。例如,下面的数据步程序读取的是左上角到右下角对角线上的一条记录。Datatestd4;Infile d:sa

10、sdatamydirtestdata.dat;Inputcode $ 1-8 /sex $ 9 / bdate $ 10-16 / income 17-23 .2 ;Proc printdata=testd4;Run ;在OUTPUT窗口中显示的运行结果如图8.6所示。图8.6 用行和列指针控制读入外部文件后的SAS数据集变量表(输入格式表)是一种分组格式表,适用于当输入的数据都以同一格式排列时,是INPUT语句的必选项。用分组格式表可以缩短INPUT语句的书写长度,因为输入格式表是被循环使用的,所以相同的格式只要在输入格式表写一遍;另外,如果变量名是“相同字符+序号”组成的,还可以在变量表中

11、用简单的形式列出来。例如,INPUT (test1-5) ($4.)。如果输入的数据的格式不是全部相同,而是部分相同可以在输入格式表中采用“重复次数*输入格式”。l 例如,INPUT (test1-5) (3*7.2,2*5.2);3. list模式list模式也称自由格式输入,是使用最方便的输入方式。当外部文件中的输入值之间至少有一个空格隔开,且丢失值用小数点表示,字符型数值长度不超过8个字节(否则需用LENGTH,ATTRIB或INFORMAT语句规定长度)时,只需在INPUT语句中列出要被赋值的变量名即可,而没有必要知道数据占据哪几列。变量的顺序和它们的数据值在数据行中的顺序应该是一致的

12、。由于SAS系统在读取数据时是扫描整个数据输入行,因此不能有选择地读取其中的一些数据值,但是可以不再读某个点以后的值。在INPUT语句中它有以下两种格式:格式一:Input <指针控制> 变量1 <$><&> <|>格式二:Input <指针控制> 变量1 <:|&|> <输入格式> <|>“& ”、“:”和“”是自由格式输入方式中的三个格式修饰符。作用如下:l “&”指明字符型输入值可能嵌有一个空格。因为在正常情况下空格为分隔符。因此不同的数据之间最好用较多的空格隔

13、开,这样字符型输入值中也就能嵌有较多的空格。l “:”指明变量的值是从以下非空格列中读取,直到第一次遇到空格或数据行末尾或读满输入格式指定的列数而结束。l “”指明当读字符值时,且INFILE语句中采用DSD选项,INPUT语句用一种特殊方法处理单引号和双引号及分隔符。若INPUT语句中使用此格式修饰符,则引号被保留作为这个值的一部分,若INPUT语句中没有使用此格式修饰符,则引号被去掉。例如,我们在NOTEPAD记事本程序中输入如图8.7所示内容,并以Testdata2.txt文件名存入到D:sasdatamydir目录下,作为第二个我们用来实验的外部文件。图8.7 数据带引号和空格且以分隔

14、符隔开的外部文件将图87所示的用逗号作为分隔符、字段数据中有空格和引号中有逗号的数据记录读入到SAS数据集,相应的数据步程序如下:Data testd5;Infiled:sasdatamydirtestdata2.txtdsd;Input name & $15. age address $40. pc;Proc print data=testd5 ;Run ;在OUTPUT窗口中显示的运行结果如图8.8所示。图8.8 用LIST模式的格式修饰符读入外部文件后的SAS数据集第九课 建立SAS系统的数据集(ACCESS)SAS/ACCESS是一个SAS系统的与外部数据库的接口模块,它为用户

15、提供了透明地访问其他数据库文件的能力。所谓透明访问是指用户不必知道各种外部数据库的物理访问结构,只要知道数据库的逻辑结构,这样对各种不同物理结构的外部数据库访问就变成一样了。SAS/ACCESS可以访问所有流行的数据库管理系统的文件。我们在这里主要介绍dBASE的*.DBF数据库文件与SAS数据集的转换。一、 用SAS/ACCESS建立描述符和数据视窗为了使SAS/ACCESS系统能访问外部数据库,首先SAS/ACCESS系统要建立外部数据库文件的描述性数据文件(.ACCESS),然后通过存取这个描述性文件的描述符,生成一个或多个数据视窗文件(.VIEW),这样SAS的其他过程就可以透明地访问

16、这个外部数据库中的数据了。例如,在目录D:SASDATAMYDIR下存在一个DBF文件SALES.DBF,我们用SAS/ACCESS窗口来建立描述符和数据视窗,并在SAS系统中显示这个SALES.DBF外部数据库文件中的记录。我们命名这个描述符文件名为STUDY.DBFSAS.ACCESS,数据视窗文件名为STUDY.DBFSAS.VIEW。具体操作步骤如下:1. 发布ACCESS命令进入SAS/ACCESS窗口进入SAS/ACCESS窗口还可以选择Globals/Access/Access database files命令,另外SAS/ASSIST软件主菜单下选择DATA MGMT子菜单,再

17、选择DBMS ACCESS子菜单同样可进入SAS/ACCESS窗口,后面的操作都相同。在SAS/ACCESS窗口的Libname列前面的横线上键入 ? 回车,可以查看所有能在横线上发布的命令,如图9.9所示。图9.9 ACCESS窗口和可在横线上发布的命令2. 选择File/New命令创建SAS/ACCESS存取描述符如图9.10所示。l 在LIBREF库标记输入框中键入STUDYl 在NAME名字框中键入DBFSASl 输入完后选择OK按钮STUDY库标记应该在事先用LIBNAME命令已经创建存在。接下来将创建文件名为STUDY.DBFSAS.ACCESS的存取描述符。图9.10 ACCES

18、S窗口和可在横线上发布的命令3. 在Select Data菜单中选择DBF Files如图911所示是各种外部数据库的文件后缀,可以选择其中一个作为访问的数据库。在本例中我们要访问的是dBASE系统的*.DBF数据库文件,所以选择DBF Files。只要MOUSE单击一下即可。图9.11 选择所要访问的外部数据库的类型4. 输入外部数据库文件所在路径和文件名如图9.12所示。l 在ACCESS:Create Descriptor对话框中输入外部数据库文件所在路径和文件名d:sasdatamydirsales.dbf后按Enter。l 可以与SAS库标记STUDY所指定的目录不同l 指定的数据库

19、字段名Assign Names现在为NO,用户可以修改外部数据库字段的变量名(逻辑上修改)l 如果Assign Names指定为YES,则SAS系统所见的逻辑数据库上字段变量名与外部物理的数据库字段变量名一致。图9.12 输入外部数据库文件所在路径和文件名5. 选择所需要的数据域和更改域名如图9.13所示,在外部文件存取描述符显示窗口中,可以在横线上发布如下命令:l S选择该数据域l D删除该数据域l X恢复已作了删除标记的数据域重新定义描述符,除了可以选择所需要的数据域外,还可以更改数据域名。在例中我们删除第一个数据域DELETE_FLG,它本来是用来存放一条记录的删除标记的。更该原数据库P

20、ERIOD域的域名为DATE。图9.13 选择所需要的数据域和更改域名6. 选择File/End保存命令后在ACCESS窗口查看*.ACCESS如图9.14所示,我们重新调出ACCESS查看,在STUDY库下新建了一个STUDY.DBFSAS.ACCESS描述符文件。在库名前面的横线上键入ED命令可以重新编辑此描述符文件,将返回到图94所示的窗口。图9.14 在ACCESS窗口查看是否已经建立了描述符文件.ACCESS7. 横线上发布CV命令创建*.VIEW视窗文件在横线上发布CV命令后进入视窗描述显示窗口,如图9.15所示。描述符所在库名输入STUDY,成员名输入DBFSAS,执行Local

21、s/Select all命令后,将选择所有的数据域,且数据视窗域名与外部数据库字段名相同。最后,选择File/End保存命令退出此窗口。图9.15 创建*.VIEW文件的窗口8. 查看*.VIEW文件,并在横线上发布BL浏览命令如图9.16所示,我们返回ACCESS窗口查看,发现又新增一个STUDY.DBFSAS.VIEW视窗文件。在它的Libname列前面的横线上键入BL命令,可以浏览外部数据库文件Sales.dbf的所有记录。图9.16 发布BL命令浏览可访问的外部数据库二、 使用PROC ACCESS过程访问外部数据库文件在SAS/ACCESS中还提供了ACCESS过程步,使得用户可以直接通过编程达到访问外部数据库文件的目的。例如,我们要访问的外部数据库文件所在目录和文件名,要创建的描述符文件名和视窗文件名都与上面的例子相同。假设要访问所有的记录和数据字段。程序如下:Libname Study “d:sasdatamydir” ;Proc AccessDBMS=DBF;Create ;Path =

温馨提示

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

评论

0/150

提交评论