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

来源:互联网 发布:中国网络黑市 编辑:程序博客网 时间:2024/05/21 21:46

        排序是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

0 0
原创粉丝点击