第三章SAS数据集的基本操作ppt课件.ppt
《第三章SAS数据集的基本操作ppt课件.ppt》由会员分享,可在线阅读,更多相关《第三章SAS数据集的基本操作ppt课件.ppt(109页珍藏版)》请在三一办公上搜索。
1、许振宇 山东大学数学学院 2006,第三章 SAS数据集的基本操作,程序实现,许振宇 山东大学数学学院 2006,1 SAS程序初步,SAS程序,程序步(Step),环境设置语句,数据步(Data Step),过程步(Proc Step),用于创建、修改数据集。以DATA语句开头。,实现面向数据集的操作,包括处理、计算、分析、呈现等功能。以PROC语句开头。,许振宇 山东大学数学学院 2006,说明:1. 命令语句SAS程序步的基本组成单位。1)一般形式 :关键词 操作对象 选项 选项1|选项2|; 2)形式:开始标志:一个用于表示命令动作的关键词,结束标志:分号“;” 。根据需要还可能包括若
2、干可选项。 3)位置:命令语句可以在行的任何位置开始,一条语句可以占据一行或多行,多条语句也可以写在同一行。语句中的各项之间用空格隔开。 4)字符:命令语句中的英文字母不区分大小写,汉字只允许出现在字符串中。,许振宇 山东大学数学学院 2006,2. 数据步的一般形式 : DATA 数据集名 选项; 命令语句序列; RUN; 3. 过程步的一般形式 : PROC 过程名 过程选项; 过程语句序列; RUN; 4. 程序步的结束: 遇到RUN语句或后面一个程序步开始时。表示前面的语句可以提交运行了。,许振宇 山东大学数学学院 2006,2 有关库和逻辑文件的程序语句,1. 标记一个数据库一般形式
3、: LIBNAME 库标记 库引擎 库的实际物理地址 选项; 功能:建立指定的库标记与其物理位置的连接。说明:库标记必须指定,见库标记的命名规则 ;数据源即文件夹的物理位置,一般从根目录开始指定其路径,并用一对引号( 或 )引起来; 库引擎根据创建库中数据集时的SAS版本号可选V6或V8,缺省值是当前SAS系统所用的引擎。例:libname dst d:dst; run;,许振宇 山东大学数学学院 2006,2. 取消库标记一般形式1:LIBNAME 库标记 ; 功能:取消指定的库标记与其物理位置的连接。 一般形式2:LIBNAME _ALL_ ; 功能:取消所有用户设置的库标记与其物理位置的
4、连接。,许振宇 山东大学数学学院 2006,3. 显示库的属性 一般形式1:LIBNAME 库标记 LIST; 功能:显示指定库的属性,包括库引擎、物理位置等。 一般形式2:LIBNAME _ALL_ LIST; 功能:显示用户指定的所有库的属性,包括库引擎、物理位置等。,许振宇 山东大学数学学院 2006,4复合库的设置一个库可以对应于多个物理位置,即多个文件夹。设置语句: LIBNAME 库标记 (位置1 位置2 ); 功能:建立指定的库标记与其若干物理位置的连接。说明:位置可以是用引号括起来的实际物理地址,也可以是一个已经设定的库标记。例:libname lib1 D:dstdata1;
5、libname lib2 (lib1 D:dstdata2); libname lib3 (D:dstdata1 D:dstdata2);,许振宇 山东大学数学学院 2006,5指定逻辑文件名 一般形式: FILENAME 逻辑文件名 文件的物理位置 ;功能:创建指定的文件的逻辑文件名与其物理位置的连接。 例:filename flight D:dstflight.dat;,许振宇 山东大学数学学院 2006,6. 查看库的内容 实现:过程步DATASETS一般形式: PROC DATASETS LIB = 库标记; RUN; 功能:在Log窗口中显示库的属性和它所包含的所有成员列表。 例:p
6、roc datasets lib=sasuser; run;Proc contents data=sashelp.class;Run;,许振宇 山东大学数学学院 2006,结果如下:,许振宇 山东大学数学学院 2006,3 生成SAS数据集,1. 数据步(Data Step)简介1.1 主要功能:创建SAS数据集。说明:数据必须以 SAS数据集的格式保存才能被许多SAS过程处理。1.2 创建SAS数据集的途径:直接在SAS系统中输入数据;import外部导入;用数据步(Data Step)将外部数据文件转换为SAS数据集;用SAS/ACESS模块访问其它数据库管理系统。1.3 数据在用数据步中
7、的输入方式: 直接在数据步中输入数据;将数据保存在文本文件中,数据步读取并生成数据集。,许振宇 山东大学数学学院 2006,图1 数据集中数据的来源,许振宇 山东大学数学学院 2006,2. 数据步的一般形式 : DATA 数据集名; INFILE 文件名 选项; INPUT 变量名 变量输入设定; 其他SAS语句; RUN; 功能:读取数据生成SAS数据集。,许振宇 山东大学数学学院 2006,说明:DATA语句:标志数据步的开始命名要创建的数据集(数据集名采用两级文件名的方式指定)。INFILE语句:用于指定要读取的源文件,源文件可以使用逻辑文件名,也可以输入其物理地址和全名(此时需要用一
8、对单引号或双引号将源文件名括起来); 必须放在INPUT语句之前;如果要在程序中直接嵌入数据,就用CARDS语句代替INFILE语句;也可以用infile datalines;INPUT语句:描述如何读取每一条观测,包括:读取源文件中的数据行,变量的命名,变量的读取模式;,许振宇 山东大学数学学院 2006,源文件:是扩展名为.dat或.csv的文本文件,其中:数据行称为记录,对应于数据集中的观测,一个数据行中的若干列组成一个具有特定含义的数据,称为字段,对应于数据集中的变量 ;变量的读取模式: 按列模式(Column) 字段开始列固定格式化模式(Formatted) 列举模式(List) 有
9、固定字段分隔符命名模式(Named) 各模式分别对应不同的INPUT语句格式。 RUN语句:标志当前数据步的结束。 在数据步中我们还可以根据需要加入其它的SAS语句。,许振宇 山东大学数学学院 2006,2系统执行数据步的过程 编译数据步执行数据步,许振宇 山东大学数学学院 2006,2.1 编译阶段1)检查语句是否有词法或语法错误;2)将数据步翻译为机器代码; 3)在内存中创建一个输入缓冲区(Input Buffer),用来存放源文件中的一条记录(一般是一行);,许振宇 山东大学数学学院 2006,4)在内存中创建一个PDV(程序数据向量Program Data Vector)用来临时存放当
10、前观测;其中_N_表示当前处理的记录序号,_ERROR_是操作出错标志(0表示正常,1表示出错)。5)根据PDV存储的信息创建数据集的描述部分。,许振宇 山东大学数学学院 2006,2.2 执行阶段 1)将PDV中的所有变量初始化为缺省值; 2)顺序执行数据步中的每条语句:3) INPUT语句将源文件(INFILE语句指定)中的下一条记录(经输入缓冲区)读入PDV; 4)其它语句(如果有)修改PDV中的数据; 5) PDV中的数据在该数据步的结束处被写入正在创建的数据集; 6)回到数据步的开始,将PDV中的所有变量初始化为缺省值; 7)重复以上步骤直到外部文件结束。,许振宇 山东大学数学学院
11、2006,图2 数据步执行的流程图,许振宇 山东大学数学学院 2006,图3 读取外部文件生成数据集示意图,许振宇 山东大学数学学院 2006,3. 在数据步中直接输入数据一般形式: DATA 数据集名; INFILE CARDS | DATALINES; INPUT 变量名 变量输入设定; CARDS | DATALINES; 数据块 ; RUN; 功能:将包含在数据步中的数据块按照指定格式输入到新建的数据集中。,许振宇 山东大学数学学院 2006,说明:1)INFILE 语句:其中的CARDS或DATALINES选项告诉系统数据在数据步中直接输入,而不是读自源文件;2)CARDS或DATA
12、LINES语句:标明了数据块的开始;3)数据块:其中的数据形式由INPUT语句中的变量输入模式决定; 数据块中的每行数据需顶头写;数据块输入完毕,位于下一行开始的分号说明了数据块的结束。,许振宇 山东大学数学学院 2006,例1:data tmp1; input x y; cards; 12 34 56 78 90 23 ;run; 说明:1)新建数据集 的二级文件名是work.tmp1 ;2)x、y分别是数据集中的变量,系统根据随后输入的数据设置它们的格式。,运行结果:,许振宇 山东大学数学学院 2006,以上数据步也可以写作如下等价形式:data tmp1; input x y ; car
13、ds; 12 34 56 78 90 23 ;run;运行结果同上。说明:跟踪符号“” 的作用:保留前一个INPUT语句使用的数据行供下一语句使用; :在一个循环结束时仍然保留数据供下一循环使用。,许振宇 山东大学数学学院 2006,4读取外部文件生成数据集4.1 按列模式(Column)1)适合的源文件数据固定在某些列中;数据中只包含标准的字符和数字。2) INPUT语句的一般形式: INPUT 变量名 $ 开始列 - 结束列 ; 3)说明:变量名:指定要创建的变量名称; $:可选项,出现说明变量是字符型的,否则说明变量是数值型的; 开始列C1 - 结束列C2:说明了变量对应的字段在源文件中
14、的读取位置,即对每行数据从第C1个字符开始读取,直到第C2个字符; 在一条INPUT语句中可为多个变量定义输入方式,它们之间以空格分隔。,许振宇 山东大学数学学院 2006,4)例子 例2:假设有如下所示的文本文件flight.dat,描述了飞机航班的日期、目的地和乘客人数。 01MAR90LON198 01MAR90FRA207 01MAR90LON205 提交以下程序: data flight; infile d:dstflight.dat; input date $ 1-7 dest $ 8-10 boarded 11-13;run;proc print data= work.fligh
15、t;run;,许振宇 山东大学数学学院 2006,结果如下:说明:程序中包含了用于创建数据集work.flight的数据步,和用于显示数据集work.flight内容的过程步PRINT。在没有给出输入输出格式的情况下,各变量的输入输出格式都采用默认值,即长度为8。 源数据行中的字段可以按照任意次序来读,也可以重复读取,例如: input boarded 11-13 date $ 1-7 dest $ 8-10 year 6-7;,许振宇 山东大学数学学院 2006,对于数值型变量来说,源文件中只能提供标准数值数据值,即只能包含数字、小数点、正负号、E。而不能有$、逗号等符号。某变量在源文件中对
16、应列全为空格,则该变量读入的是一个缺省值。按列模式也可以用于在数据步中直接读入数据例3:data flight; infile datalines; input date $ 1-7 dest $ 8-10 boarded 11-13; datalines;01MAR90LON19801MAR90FRA20701MAR90LON205;run; 此数据步提交结果与例2一样。,许振宇 山东大学数学学院 2006,4.2 格式化(Formatted)模式1) 适合的源文件字段具有固定格式 含有不标准数据2) 一般形式:INPUT 输入指针控制 变量名 输入格式 ;,许振宇 山东大学数学学院 200
17、6,3)说明:输入指针控制:将输入指针控制在源文件数据行的某个位置,作为变量读取的开始列号。在读数据行的过程中,输入指针自动向后移动。输入指针控制方式有两种: n:表示将输入指针移动到第n列(绝对位置); n:表示将输入指针从当前位置向后/向前移动n列(相对位置)。 变量名:指定要创建的变量名称; 输入格式:指定变量的输入格式,即如何读取该变量,一般形式如下: $输入格式名w.d在一条INPUT语句中可为多个变量定义输入方式,它们之间以空格分隔。,许振宇 山东大学数学学院 2006,4)例子例4:例2中的数据步可以写为如下等价形式:data flight; infile d:dstflight
18、.dat; input date $7. 8 dest $3. 11 boarded 3.;run;或data flight; infile d:dstflight.dat; input date $7. dest $3. boarded 3.;run;,许振宇 山东大学数学学院 2006,说明:输入格式仅指出如何读取该变量的数据,不影响变量的属性,也不影响输出格式; 变量的读取顺序是任意的; 读第一个变量的缺省输入指针的绝对位置为第一列(1),读第n+1(n1)个变量的输入指针的绝对位置=第n个变量的输入指针的绝对位置+第n个变量的输入格式中的长度。,许振宇 山东大学数学学院 2006,4.
19、3 列举模式1)适合的源文件字段长度可以不同字段之间需要用固定的分隔符号分开2)一般形式: DATA 数据集名; INFILE 文件名 DLM= DSD; INPUT 变量名 $ | :输入格式 ; RUN; Class.dat dsd,许振宇 山东大学数学学院 2006,3)说明:在此种输入模式中,系统在源文件的数据行中依次读取与INPUT语句中所列出的变量相对应的值,保存到数据集中。INPUT语句中的变量顺序必须对应于源数据行中字段的从左到右的顺序,不允许跳跃或重复读取。当源文件某一数据行中用分隔符间隔的字段个数少于INPUT语句中变量的个数,则系统自动从下一行的第一列读取字段。该观测读取
20、完毕,下一行中剩下的字段将被舍弃。下一条观测将从再下一行的第一列读起。系统默认的分隔符是空格,用户也可通过INFILE语句中的DLM选项自行设置。注意设置的分隔符两端需加引号,如:dlm=, 。,许振宇 山东大学数学学院 2006,INFILE语句中的DSD选项有如下作用:另外在读取数据时,将同一数据行中最外层的引号对中间的内容作为字符串读入。这样可以解决字符型字段中包含分隔符的问题。 ,许振宇 山东大学数学学院 2006,INPUT语句中的变量名后面的$号用于指明该变量是字符型的,不写则说明该变量是数值型的; 源文件中字段的缺省值需用不同于分隔符的字符表示,字符型字段中不能含有分隔符,否则会
21、带来异常结果。 输入格式仅控制PDV中数据向变量的转换,而源文件中字段的读取长度由分隔符决定。,许振宇 山东大学数学学院 2006,4)例子例5:假设有如下源文件employee.dat保存了职工信息,包括姓、名、所在部门、电话号码。 Alvarz Joe Development 4327 Brown Ann Publications 2587 Miller Rick Sales 3456 Krueger John Training 2145读入此源文件并创建数据集的数据步如下:data employee; infile d:dstemployee.dat; input LastName $
22、FirstName $ Department $ TelNum $;run;,许振宇 山东大学数学学院 2006,也可写为: data employee; infile d:dstemployee.dat; input LastName :$12. FirstName :$12. Department :$12. TelNum :$4.;run;通过VIEWTABLE窗口可看到结果如下:,许振宇 山东大学数学学院 2006,例6:假如源文件employee.csv是以下形式,其中保存了职工信息,包括名字、所在部门、电话号码。 Alvarz,Joe,Development,4327 Brown,
23、Ann,Publications,2587 Miller,Rick,Sales, Krueger,John,Training,2145 源文件中逗号为分隔符,编写如下数据步:data employee; infile d:dstemployee.csv dlm=,; input LastName $ FirstName $ Department $ TelNum $;run;,许振宇 山东大学数学学院 2006,则会产生如下结果:,许振宇 山东大学数学学院 2006,如果在数据步中添加选项DSD,修改为如下形式: data employee; infile d:dstemployee.csv
24、dsd; input Name :$16. Department :$12. TelNum :$4.;run;则可得到我们希望的结果:,许振宇 山东大学数学学院 2006,4.4 命名模式1)适合的源文件 每个数据行都要为各个字段对应的数据指定变量名 2)一般形式: INPUT 变量名=输入格式 ;,许振宇 山东大学数学学院 2006,例7:假设有如下形式的源文件class.dat:Name=Alex Bruce Sex=M Height=174Name=Cathy Lee Sex=F Height=160我们调用以下数据步:data temp; infile d:dstclass.dat;
25、input Name=$10. Sex=$1. Height=3.; run; 可得到如下数据集:,许振宇 山东大学数学学院 2006,5. INFILE语句中的选项 5.1 一般形式: INFILE 文件名 firstobs=起始行号 obs=终止行号; 5.2 说明firstobs=起始行号指定了从源文件的那一行开始读取数据 ;obs=终止行号指定了读到源文件的那一行结束。作用:主要用于避开源文件开始部分的说明性文字,或者在调试程序时控制读取的行数。 此选项对所有输入模式都适用。,许振宇 山东大学数学学院 2006,6. 输出格式的设置6.1 一般形式:通过语句FORMAT实现,其一般形式
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三 SAS 数据 基本 操作 ppt 课件

链接地址:https://www.31ppt.com/p-1469141.html