SAS:where 语句


SAS WHERE 语句用于 SAS 数据步骤或过程语句中,用于筛选数据行。


简介
WHERE 语句的格式很简单,只要后面跟用于数据筛选的逻辑表达式即可:
WHERE logical-expression(s);
下面的例子基于 test1 数据表生成 test2 数据表,但是只选择满足 sex='F' 并且 age>20 的数据行:
data test2; set test1; where sex='F' AND age>20; run;
表面看来,WHERE 语句和数据步骤中的 SAS IF 语句的功能相近,都是筛选数据和。实际上 WHERE 语句和 IF 语句的运作机制是不同的。WHERE 语句相当于对数据集执行了一个 SQL Select 的操作。也就是说,在进入到操作前数据已经被整体筛选过了,而 IF 语句是在数据步骤的每个循环中单独执行的,WHERE 语句显然效率要提高很多。如果数据表是索引过的,那么 WHERE 语句能够更加显著地提高效率。
WHERE 语句也有其限制。因为它是对现存的数据表的整体性操作,故而只能对该数据表中已有的变量进行筛选操作,不能对数据处理后生成的变量操作,也不能对 INPUT 语句定义的变量操作。

WHERE 语句不但能用于数据步骤中还能用于过程语句中。


操作符
除了一般的 SAS 操作符(见 SAS 语法),WHERE 语句还支持一些特有的操作符。
1)between ... and。比如:

where x between 10 and 20;

等价于

where 10<=x<=20;
2)contains字符串包含。可以用问号(?)代替。比如:

where firstname contains 'john';  

等价于

 where firstname ? 'john';

3)is null 或 is missing。测试是否空值。比如:
where age is null;   where age is missing;
4)like。用于字符串匹配。百分号 % 代表多个任意字符,下划线 _ 代表一个任意字符。比如以下的方式都匹配“john”:
where firstname like 'j_h_';
where firstname like 'j%';
 5)same and。用于合并上一个 WHERE 语句。比如:
where age>10;
where same and sex='F';
以上两句相当于一句:
where age>10 and sex='F';
6)min 和 max。两数中的较小或较大者。比如:where x = (a min b);
  • 8
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值