您的位置:首页 > 其它

SAS如何在不排序的情况下使用by语句

2016-03-26 15:59 211 查看
        排序是SAS中非常常用的一个操作。尤其是在merge之前,通常是要排序的。SAS在进行排序时,会在C盘开辟出一块临时空间,排序的数据集越大,临时空间也越大。因此,如果电脑的C盘空间不足,排序会被迫停止,并且在日志中报错。那么如何在不排序的情况下,使用by语句呢?答案是创建索引。如下面代码所示:

data a_1402;
input id $ var1;
datalines;
3 12.3
1 41.3
2 87.9
;

run;

data a_1403;
input id $ var2;
datalines;
1 56.3
2 4.3
3 1.2
;

run;

proc datasets library=work nolist;/*创建单一索引*/
modify a_1402; index create id;
modify a_1403; index create id;

run;

 
data a_merge;/*进行merge合并*/

    merge a_1402(in=a) a_1403(in=b);

    by id;

    if a and b;

run;

如上内容来自《Professional SAS Programming Shortcuts: Over 1,000 Ways To Improve Your SAS Programs(Third Edition)》 P19
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  SAS 不排序 by 索引