1. 程式人生 > >SAS如何在不排序的情況下使用by語句

SAS如何在不排序的情況下使用by語句

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