07. IF和WHERE语句
(一) IF-THEN语句
一、基础语法
做选择时需要用到条件语句:若满足??条件,则执行?? 语法:
if 条件 then 执行语句;
若有多个执行语句,则用
if 条件 then DO;
执行语句1; 执行语句2; END;
多选择分支,则用
if 条件 then 执行语句; else if 条件 then 执行语句; else 执行语句;
SAS中常用的比较、逻辑算符(也见系列02):
符号 = 或eq ^= 或ne > 或gt < 或lt >= 或ge 含义 等于 不等于 大于 小于 大于等于 示例 name = 'Jones, C.'; temp ^= 212; income > 20000; partno < \id >= '1543'; <= 或le contains或 ? in and or 小于等于 包含 属于 且 或 pulse <= 85 firstname contains 'Jon'; actlevel in ('LOW','MOD'); fee in (124.80,178.20); age<=55 and pulse>75; area='A' or region='S';
二、数据步中使用IF-THEN语句赋值
数据步中经常需要有选择地赋值新变量或修改原数值。
例1 稀有古董汽车拍卖的数据文件(C:\\MyRawData\\ Auction.dat)包含了品牌、型号、制造年份、座位数、价格(百万美元):
使用IF-THEN语句填满缺失值,并创建一个新变量Veteran. 代码:
data oldcars;
infile 'c:\\MyRawData\\Auction.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. 数据步读入数据时,用IF-THEN语句选择满足条件的数据读入。语法: if 条件;
如果“条件”为真,则数据步将继续执行。还可以使用DELETE语句,来删除哪些不要的数据: 下面这两句话是等价的:
if Sex='f';
if Sex='m' then DELETE;
例2 莎士比亚歌剧的清单(C:\\MyRawData\\Shakespeare.dat),包含歌剧名、首次表演年份、类型:
读取数据,并且用IF语句构造一个只包含喜剧(comedies)的子集: 代码:
data comedy;
infile 'c:\\MyRawData\\Shakespeare.dat'; input Title $ 1-26 Year Type $; if Type = 'comedy'; run;
proc print data = comedy;
title 'Shakespearean Comedies'; run;
运行结果:
2. 数据步中用IF-THEN语句创建多个数据集
若想在一个数据步中创建多个数据集,在DATA语句后面多接几个数据集名即可。用IF-THEN语句可以分别将数据写入不同的数据集。
相关推荐: