标题: IF 和 WHERE 的区别 [打印本页] 作者: shiyiming 时间: 2008-3-3 15:42 标题: IF 和 WHERE 的区别 看到一道题目问sas里面if和where的区别?
还有一道题目是要举个例子,用一个data step 生成多个 data sets。
感觉满偏的,请高手解决一下。多谢啦!!!作者: shiyiming 时间: 2008-3-3 16:02 标题: Re: IF 和 WHERE 的区别 生成多个数据集的例子
[code:1j70c946]data a b;
input sex$ country$;
if sex="f" then output a;
if sex="m" then output b;
cards;
f china
m china
f america
m australia
;
[/code:1j70c946]是这种么?作者: shiyiming 时间: 2008-3-3 16:10 标题: Re: IF 和 WHERE 的区别 多谢楼上的回复。知道是怎么回事了。
那请问if 和 where 有什么区别呢?作者: shiyiming 时间: 2008-3-3 17:11 标题: Re: IF 和 WHERE 的区别 仔细比较一下log,你一定能自己悟出区别的。
[quote:2hccy8i8]1 data a;
2 set sashelp.class;
3 if sex='F';
4 run;
NOTE: There were 19 observations read from the data set SASHELP.CLASS.
NOTE: The data set WORK.A has 9 observations and 5 variables.
NOTE: DATA statement used (Total process time):
real time 0.35 seconds
cpu time 0.00 seconds
5
6 data b;
7 set sashelp.class;
8 where sex='F';
9 run;
NOTE: There were 9 observations read from the data set SASHELP.CLASS.
WHERE sex='F';
NOTE: The data set WORK.B has 9 observations and 5 variables.
NOTE: DATA statement used (Total process time):
real time 0.04 seconds
cpu time 0.01 seconds[/quote:2hccy8i8]作者: shiyiming 时间: 2008-3-3 21:14 标题: Re: IF 和 WHERE 的区别 多谢回复。
是不是说if的话会从原数据集中将所有记录都读出来,然后筛选,存入新数据集;
而where的话直接将符合条件的记录筛选出来存入新数据集;
所以where的效率应该要高于if。
不知道是不是这样理解的。作者: shiyiming 时间: 2008-3-4 00:21 标题: Re: IF 和 WHERE 的区别 对于where总结如下:
WHERE语句读入数据集之前选择观测。
使用WHERE语句时,因为SAS系统只从输入数据集中读入满足条件的观测,所以这样的SAS程序更有效。
WHERE语句不是可执行语句,它起不到IF-THEN语句的作用。
能用WHERE语句的地方一定可以用IF语句来代替,反之则不行。不过,一旦WHERE语句有效,就一定要用它,因为这样的程序效率高。作者: shiyiming 时间: 2008-3-20 10:54 标题: Re: IF 和 WHERE 的区别 where效率高,if灵活,譬如where _n_>3 会报错,但可以用if _n_>3作者: shiyiming 时间: 2008-3-27 01:31 标题: to wind Can't agree more.作者: shiyiming 时间: 2008-3-28 16:29 标题: Re: IF 和 WHERE 的区别 IF 和 WHERE 除了樓上提出的分別外
Table index 都會被 IF 和 WHERE 有所分別
WHERE 是會運用 index, 但 IF 不會 (但其實 WHERE 有某些情況下也不會運用 index)
還有
WHERE 可以用到 contain 之類既 keywords, 但 IF 是不可以的
比類而言, WHERE 就像 SQL 的 WHERE 的用法