SAS系统讲义第三章.ppt

上传人:w****2 文档编号:15550032 上传时间:2020-08-20 格式:PPT 页数:45 大小:481.50KB
收藏 版权申诉 举报 下载
SAS系统讲义第三章.ppt_第1页
第1页 / 共45页
SAS系统讲义第三章.ppt_第2页
第2页 / 共45页
SAS系统讲义第三章.ppt_第3页
第3页 / 共45页
资源描述:

《SAS系统讲义第三章.ppt》由会员分享,可在线阅读,更多相关《SAS系统讲义第三章.ppt(45页珍藏版)》请在装配图网上搜索。

1、例2:选择数据集sashelp.class中的观测生成新数据集work.class,要求其中的观测满足条件:年龄大于14岁的男生。 data class; set sashelp.class ; if sex=M and age14; run;,2)WHERE语句 一般形式: WHERE 条件表达式; 功能:对读入PDV中的观测进行选择,只有使表达式成立的观测才被保留。 说明:WHERE操作符:只能在WHERE语句中使用的比较运算符。 变量 BETWEEN 值1 AND 值2 变量的值包含在值1和值2构成的的范围内。 变量 CONTAINS 字符串 变量中包含字符串 例如例2用WHERE语句代

2、替IF语句可写为: where sex=M and age14;,3)WHERE选项 一般形式: (WHERE = (条件表达式) 功能:对观测进行选择,只有使表达式成立的观测才被写入目的数据集。 说明: 1)可用于SET语句或DATA语句中。 2)一个数据步中可以在SET或DATA语句中同时出现WHERE选项,同时还可以有WHERE语句。 例2可用以下数据步实现: data class (where=(sex=M); set sashelp.class (where=(age14) ; run;,2.2 源数据集选项 在源数据集或源数据文件读入PDV时,可通过设置此选项控制读入的起始行和终止

3、行。 一般格式如下: ( FIRSTOBS = 起始行号 OBS = 终止行号 ) 功能:指定读取源数据集或源文件的起始行和终止行。 说明: 1)应用于SET或INFILE语句中; 2)系统在缺省情况下读取所有观测或数据行。 例3:读取sashelp.class中的第4条到第10条观测,生成新的数据集work.class。 data class; set sashelp.class (firstobs=4 obs=10); run;,3.有关变量的数据加工 3.1 选择变量 方法:数据步中设置KEEP=和DROP=选项,或加入KEEP和DROP语句, 1)KEEP和DROP语句 一般形式: K

4、EEP 变量1 变量2 ; DROP 变量1 变量2 ; 功能: KEEP语句:列出的是在新数据集中要保留的变量, DROP语句:列出的是在新数据集中要删除的变量。,例4:如下图所示,在SAS系统中有数据集sashelp.class,其中包含了5个变量:Name、Sex、Age、Height、Weight。 如果我们希望构造一个新数据集work.class,其中仅包含变量Name、Age、Height。可通过以下数据步实现:,data class; set sashelp.class; drop sex weight; run; 也可将上例中的DROP语句替换为如下KEEP语句: keep n

5、ame age height; 则在VIEWTABLE窗口中打开work.class可看到如下结果:,2)数据集选项KEEP和DROP 一般形式: (KEEP = 变量1 变量2 ) (DROP = 变量1 变量2 ) 功能: KEEP选项:列出的是在新数据集中要保留的变量, DROP选项:列出的是在新数据集中要删除的变量。 说明: (1)可用于SET语句或DATA语句中。 (2)一个数据步中可以在SET或DATA语句中同时出现KEEP或DROP选项,同时还可以有KEEP或DROP语句。但此时需要注意避免变量的冲突。,对于例4也可以用以下数据步实现: data class(keep=name

6、age height); set sashelp.class; run; DATA语句也可写为: data class(drop=sex weight); 或: data class; set sashelp.class(keep=name age height); run; SET语句也可写为: set sashelp.class(drop=sex weight);,3.2 变量的创建与赋值 在数据加工过程中不仅可以舍弃不需要的变量,还可以创建新的变量并对其进行赋值。 1) 赋值语句 一般形式: 变量名 = 表达式; 功能: 如果等号左端的变量已经存在于数据集中,则修改改变量的值; 如果数据

7、集中不存在等号左端的变量,则创建新变量并赋值。 说明: 表达式可以是任何有效的表示形式,其中可以包括变量、常数、运算符、函数、子表达式。,例5:数据集sashelp.class中变量Height和Weight是以英制单位表示的,我们想新建一个数据集work.class,其中变量Height和Weight以公制单位表示,并且增加一个新变量Ratio,用于保存每个人的体重和身高的比例(Weight/Height)。 data class; set sashelp.class; Height=Height*0.0254; Weight=Weight*0.454; Ratio=Weight/Heigh

8、t; run;,在VIEWTABLE窗口中可观察到新数据集work.class的内容如下:,例6:在读取外部文件创建数据集时,也可以创建新变量。假设一个保存航班信息的文本文件dfw.dat,其中每个航班信息对应一行,其中有如下字段:,我们通过如下数据步新建数据集work.flight,并添加一个新变量Total用于保存每个航班上的所有人数。 data flight; infile d:dstflight.dat; input FlightID $ 1-3 Date date7. Dest $ 11-13 Boarded 14-16 Trans 17-19 Aircrew 20-22; Tota

9、l= Boarded + Trans + Aircrew; run;,2) 变量属性的设置 (1)设置变量的类型和长度 一般形式: LENGTH 变量名1 $ 长度 变量名2 $ 长度 ; 功能: 预先为指定变量设置类型和长度。 说明: 该语句必须出现在其他语句引用这一变量之前(包括赋值语句)。 变量的类型通过可选项$设置, 若给出,表示变量是字符型的; 若不给出,表示变量是数值型的。,(2)设置变量的输出格式 一般形式: FORMAT 变量名1 输出格式 变量名2 输出格式 ; 功能: 给指定的变量设置输出格式。 (3)设置变量的输入格式 一般形式: INFORMAT 变量名1 输入格式 变

10、量名2 输入格式 ; 功能: 给指定的变量设置输入格式。,(4)设置变量的标签 一般形式: LABEL 变量名1 = 标签 变量名2 = 标签 ; 功能: 给指定的变量设置标签(即注释)。 说明: 标签以用一对引号括起来的字符串的形式给出。,1. 实现:过程步SORT 2. 一般形式: 3.功能:根据指定排序变量对数据集中的观测进行排序。,PROC SORT DATA=数据集名 OUT=输出数据集名; BY DESCENDING 变量名1 DESCENDING 变量名2 ; RUN;,7 数据集的排序,4.说明: 1)数据集中的观测的缺省顺序:观测输入数据集的顺序。 2)DATA=数据集名:指

11、定待排序的数据集。 3)OUT=输出数据集名:指定存放排序结果的数据集,若不给出此选项,系统缺省将排序结果存放在原数据集名下。 4)BY语句指定排序变量,可在此设置多个排序变量,按其出现的前后顺序称为第一排序变量、第二排序变量、。系统在进行排序时,首先将数据集中的观测按照第一排序变量的值进行排序,对于那些在第一排序变量的值相等的观测,按照第二排序变量的值进行排序,以此类推,直到处理完BY语句中的所有排序变量。 5)系统默认按照排序变量的值进行升序排序(即由小到大排序),如果在变量名前给出可选项DESCENDING,则按照排序变量的值进行降序排序(即由大到小排序)。,例1:对数据集sashelp

12、.class中的观测进行排序,首先按照变量Age的值降序排列,Age相同的观测按照Height升序排列。排序结果保存在work.sortedclass中。 proc sort data=sashelp.class out=sortedclass; by descending age height; run;,7 数据集的合并与拼接,1. 拼接数据集 拼接两个数据集的操作使得结果数据集中可以包含两个数据集的所有观测。,一般格式: DATA 新数据集名; SET 源数据集名1 源数据集名2 ; RUN; 功能: 通过数据步中SET语句完成数据集的拼接,使结果数据集中包含SET语句中列出的数据集的所

13、有观测。,说明: 1)如果SET语句中两个源数据集包含不同的变量,则结果数据集中包含所有出现过的变量。对于没有此变量的数据集中的观测,系统会自动加入缺省值。 2)可以在DATA或SET语句中通过选项对变量进行重命名,选项格式如下: ( RENAME = ( 原变量名 = 新变量名 ) ) 此选项紧跟在某一源数据集之后; 如果参加拼接的两数据集中存在变量名字不同,但其它属性相同,可在拼接过程中对其中一个数据其中的变量改名。,例1:新建两数据集A和B并拼接为一个新数据集Combine。 data A; input Num Var$ A$ ; cards; 1 A1 X1 2 A2 X2 5 A3

14、X3 ; run; data B; input Num Var$ B$ ; cards; 3 B1 Y1 4 B2 Y2 6 B3 Y3 ; run; data Combine; set a b; run;,例2:拼接如下两个数据集FA1和FA2, 数据步和结果如下: libname dst d:dst; data newfa; set dst.fa1 dst.fa2; run;,例3:有以下两个数据集dst.fa1和dst.fa3,拼接两数据集(同时对dst.fa3 中的变量jcode重命名)。 data newfa; set dst.fa1 dst.fa3(rename=(jcode=jo

15、bcode); run;,2.合并数据集 将两个数据集进行合并,则结果数据集中可以包含两个数据集中的所有变量。 前提:两数据集有相同的变量即变量的名字、类型和长度完全相同,我们将此类变量称为合并变量。结果数据集中包含两个数据集中的所有变量(但合并变量只出现一个,系统自动删去重复的一个)。,合并过程如下: 系统从头开始依次扫描数据集A中的每一条观测, 对于数据集A中正在扫描的当前观测,系统从头开始会依次扫描数据集B中的每一条观测,并且判断分别来自于两数据集的当前观测的合并变量的值是否相等。 如果相等,则将两条观测合并成一条观测,保存到结果数据集C中; 如果不相等,则扫描数据集B中的下一条观测。

16、当扫描完数据集B中的最后一条观测,则扫描数据集A中的下一条观测,而对于数据集B从头开始下一趟扫描。 反复执行以上操作,直到数据集A中的所有观测都处理完毕。,一般形式: DATA 新数据集名; MERGE 源数据集名1 源数据集名2 ; BY 合并变量名; RUN; 说明: 1)MERGE语句可以合并任意多个数据集。 2)合并前必须对输入数据集按照合并变量进行排序。,3)对于一个数据集中的一条观测,如果另一个数据集中没有排序变量相等的观测,则系统在结果数据集中也构造一条新观测,并且在属于另一个数据集的变量中设置缺省值。 4)对于一个数据集中的一条观测,在另一个数据集中可能有多条观测的排序变量与之

17、相等,那么有几条排序变量相等的观测就在结果数据集中生成几条新观测。 5)可以在DATA或MERGE语句中对变量进行重命名,选项格式如下: ( RENAME = ( 原变量名 = 新变量名 ) ),例15:新建两数据集person和salary并合并为一个新数据集persal。,data person; input ID LName$ FName$; cards; 2538 Dean Sharon 2559 Carter Dorothy 2658 Arthur Barbary 3992 Cooper Anthony ; run; proc sort data=person; by ID; run

18、;,data salary; input ID Salary; cards; 2538 32886 3992 43567 ; run; proc sort data=salary; by ID; run; data persal; merge person salary; by ID; run;,结果如下:,8 SAS程序的控制结构,SAS语言的三种程序控制结构,顺序结构,分支结构,循环结构,说明:这三种程序控制结构都可以在程序步中(包括数据步和过程步)实现 。,1. 顺序结构 语句序列的执行顺序与其在程序中的排列顺序是一致的。 2. 分支结构 2.1 单分支及双分支结构 一般形式1: IF

19、条件表达式 THEN 语句1; ELSE 语句2; 说明: 如果不包含方括号中的可选项,就是单分支结构;否则是双分支结构。 这种分支结构的每个分支只能包含一条语句。,例16:参照例13,在创建数据集的同时,计算每个航班的总人数及其收入,保存到变量REV和TOTAL中。假设到达拉斯(DFW)的机票价格是$600,到洛杉矶(LAX)的机票价格是$900。 data flight; infile d:dstDFW.dat; input FlightID $ 1-3 Date date7. Dest $ 11-13 Boarded 14-16 Trans 17-19 Aircrew 20-22; To

20、tal= Boarded + Trans + Aircrew; if dest=DFW then Rev=(boarded+trans)*600; else if dest=LAX then Rev=(boarded+trans)*900; run;,一般形式2: IF 条件表达式 THEN DO; 语句序列1; END; ELSE DO; 语句序列2; END; 说明: 在这种分支结构中,每个分支可以包含多条语句,以成对出现的DO;END;对表示其开始和结束。,例17:在例16中的数据集中再增加一个变量City,用来表示每个航班目的地的名字。 data flight; infile d:ds

21、tdfw.dat; input FlightID $ 1-3 Date date7. Dest $ 11-13 Boarded 14-16 Trans 17-19 Aircrew 20-22; Total= Boarded + Trans + Aircrew; if dest=DFW then do; Rev=(boarded+trans)*600; City=Dallas; end; else if dest=LAX then do; Rev=(boarded+trans)*900; City=Los Angeles; end; run;,2.2 多分支结构 一般格式1: SELECT (选

22、择表达式); WHEN(值列表1) 语句1; WHEN(值列表2) 语句2; OTHERWISE 语句n; END; 说明: 执行分支语句i的条件是: 选择表达式 IN (值列表i) 每条分支语句执行完毕后自动 将控制转到分支结构末尾; OTHERWISE语句是可选项,当选择表达式的值不在所有值列表中时执行该语句。,一般格式2: SELECT; WHEN(条件表达式1) 语句1; WHEN(条件表达式2) 语句2; OTHERWISE 语句n; END; 说明: 执行分支语句i的条件是: 条件表达式i = 0。 每条分支语句执行完毕后自动 将控制转到分支结构末尾; OTHERWISE语句是可选

23、项,当所有条件表达式不成立时执行该语句。,例18:对系统提供的数据集sashelp.class进行修改生成新数据集work.class。增加变量Wtgrade保存体重级别,小于90磅的为Light,90110磅的为Middle,大于90磅的为Heavy。 data class; set sashelp.class; length Wtgrade $ 8; select; when (weight90) Wtgrade=Light; when (weight110) Wtgrade=Middle; otherwise Wtgrade=Heavy; end; run;,3循环结构 3.1 步长型循

24、环 一般格式: DO 循环变量 = 初值 TO 终值 BY 步长; 语句序列; END; 说明:此循环结构以循环变量控制循环次数。 循环前给循环变量赋初值。 每执行一次循环体内部的语句序列,系统会自动给循环变量加上步长(缺省值:1)作增量。 循环的继续执行条件是:初值循环变量终值(或:初值循环变量终值)。 当循环变量超出终值,则循环结束。,步长型循环流程图,3.2 当型循环 一般格式: DO WHILE (条件表达式); 语句序列; END; 说明: 此循环结构因为是当条件表达式成立时执行循环体内部的语句序列,因此我们称之为当型循环。 当条件表达式不成立时,则循环结束。,当型循环流程图,3.3 直到型循环 一般格式: DO UNTIL (条件表达式); 语句序列; END; 说明: 此循环结构因为是反复执行循环体内部的语句序列直到条件表达式成立,因此我们称之为直到型循环。,直到型循环流程图,例19:假设我们已知某银行贷款的年利率是0.1,并且逐月计息,我们编制如下数据步计算并保存一年的本息。 data temp; amount=25000; rate=0.1; do i=1 to 12; amount=amount+amount*rate/12; end; run;,

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!