ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:254.99KB ,
资源ID:6131292      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6131292.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(SAS学习系列07IF和WHERE语句.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

SAS学习系列07IF和WHERE语句.docx

1、SAS学习系列07IF和WHERE语句07. IF和WHERE语句(一) IF-THEN语句一、基础语法做选择时需要用到条件语句:若满足条件,则执行 语法:if 条件 then 执行语句;若有多个执行语句,则用if 条件 then DO; 执行语句1; 执行语句2; END;多选择分支,则用 if 条件 then 执行语句; else if 条件 then 执行语句; else 执行语句;SAS中常用的比较、逻辑算符(也见系列02):符号含义示例= 或eq等于name = Jones, C.;= 或ne不等于temp = 212; 或gt大于income 20000; 或lt小于partno

2、= 或ge大于等于id = 1543;= 或le小于等于pulse = 85contains或 ?包含firstname contains Jon;in属于actlevel in (LOW,MOD);fee in (124.80,178.20);and且age75;or或area=A or region=S;二、数据步中使用IF-THEN语句赋值 数据步中经常需要有选择地赋值新变量或修改原数值。例1 稀有古董汽车拍卖的数据文件(C:MyRawData Auction.dat)包含了品牌、型号、制造年份、座位数、价格(百万美元):使用IF-THEN语句填满缺失值,并创建一个新变量Veteran.

3、代码:data oldcars;infile c:MyRawDataAuction.dat;input Make $ 1-13 Model $ 15-29 YearMade Seats MillionsPaid;if YearMade 1890 then Veteran = Yes;if Model = F-88 then DO; Make = Oldsmobile; Seats = 2;end;run;proc print data = oldcars;title Cars Sold at Auction;run;运行结果:二、 数据步中使用IF-THEN语句创建子数据集(也见系列03)1.

4、 数据步读入数据时,用IF-THEN语句选择满足条件的数据读入。语法: if 条件;如果“条件”为真,则数据步将继续执行。还可以使用DELETE语句,来删除哪些不要的数据: 下面这两句话是等价的:if Sex=f; if Sex=m then DELETE;例2 莎士比亚歌剧的清单(C:MyRawDataShakespeare.dat),包含歌剧名、首次表演年份、类型:读取数据,并且用IF语句构造一个只包含喜剧(comedies)的子集:代码:data comedy;infile c:MyRawDataShakespeare.dat;input Title $ 1-26 Year Type $

5、;if Type = comedy;run;proc print data = comedy;title Shakespearean Comedies;run;运行结果:2. 数据步中用IF-THEN语句创建多个数据集若想在一个数据步中创建多个数据集,在DATA语句后面多接几个数据集名即可。用IF-THEN语句可以分别将数据写入不同的数据集。例3 动物园给动物喂食的数据(C:MyRawDatazoo.dat),变量为动物类型、生物学分类、居住区域、喂食时间(上午/下午/两者):读入数据并输出两个列表,一个是早上喂食,一个是下午喂食。代码:data morning afternoon;infil

6、e c:MyRawDataZoo.dat;input Animal $ 1-9 Class $ 11-18 Enclosure $ FeedTime $;if FeedTime = am then output morning;else if FeedTime = pm then output afternoon;else if FeedTime = both then output;/* 每个数据集都输出,省略数据集名 */run;proc print data = morning;title Animals with Morning Feedings;proc print data = a

7、fternoon;title Animals with Afternoon Feedings;run;运行结果:三、用IF-THEN语句将观测值分组对观测值分组,实际上只是为每个观测值分配一个分组标签,用新的列变量存储分组标签,这样后续就可以借助分组关键词(class),对数据做分组处理。例4 住房改善的数据(C:MyRawDatahome.dat),包括了姓名、改善工作、改善成本: 读取数据,并新建了一个CostGroup的变量。根据Cost的值将数据分成high、medium、low和missing三类。代码:data homeimprovements;infile c:MyRawData

8、Home.dat;input Owner $ 1-7 Description $ 9-33 Cost;if Cost =. then CostGroup = missing;else if Cost 2000 then CostGroup = low;else if Cost 6000, 以及位于美洲的山脉。代码:data tallpeaks (WHERE = (Height 6000)american (WHERE = (Continent CONTAINS (America);infile c:MyRawDataMountains.dat;input Name $1-14 Continen

9、t $15-28 Height;run;proc print data = tallpeaks;title Members of the Seven Summits above 6,000 Meters;run;proc print data = american;title Members of the Seven Summits in the Americas;run;运行结果:(三) IF与WHERE的区别将数据集SASHELP.workers第10到15条观测中满足条件ELECTRIC260的观测提取出来,生成新的数据集tmp。代码1:data tmp; set SASHELP.wor

10、kers(firstobs=10 obs=15); if ELECTRIC 260;run;proc print data = tmp;title IF Statement;run;运行结果(4条记录): 代码2:data tmp; set SASHELP.workers(firstobs=10 obs=15); where ELECTRIC 260;run;proc print data = tmp;title WHERE Statement;run;运行结果(6条记录): 上述两种方法为什么输出结果不一样?请注意IF语句和WHERE语句的区别: (1)IF语句是面向“程序数据向量”(Pro

11、gram Data Vector)的,对当前PDV中的数据进行判断,满足条件时将其写入到外部数据集;WHERE语句也是面向PDV的,它使用于从外部数据源读数据到PDV之前进行判断,当满足条件时才被写入到PDV。显然一个在写入PDV之前,一个在写入PDV之后,两者是有差异的。 (2) 当没有数据集选项firstobs=10 obs=15时,IF语句和WHERE语句用法和结果相同,但有这两个选项时效果就不同了。有这两个选项,IF语句是从原数据集(或数据源)的观测记录进行计算个数,即从原数据集的第10个观测开始读入到PDV中,然后再判断是否满足IF条件,若满足则输出到外部数据集,直到原数据集的第15个观测结束(满足条件的只有4个)。而WHERE语句是在读入到PDV之前就进行判断的,所以这里的firstobs的意思是从使得满足WHERE条件的第10个观测开始,而不是原数据集的第10个观测开始,直到满足WHERE条件的第15个观测结束(共6个)。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1