一般使用者運用 SAS 時,有時需自某一資料集,取得該資料集之總筆數或篩選條件後之筆數。
本文提供以下之 SAS Data Step 語法,運用 SAS I/O Function ,將某一資料集之總筆數及篩選後之筆數,取出後置於 SAS MACRO 變數中,供後續使用。
範例:
<< 程式 : SAS I/O Function程式範例 >>
<< 日誌 : SAS I/O Function程式範例 >>
程式說明如下 :
-
本範例先複製SASHELP.CLASS 資料集,至工作區 WORK.CLASS。
-
DA=OPEN('WORK.CLASS(WHERE=(AGE>12)','I'); 運用 OPEN 函數,將WORK.CLASS資料集,以唯讀('I')之方式打開。同時,篩選條件為年齡大於12歲。DA之值為1,代表為第1個成功打開之唯讀資料集代碼。
-
NUM1 = ATTRN( DA , 'NLOBS' ); 運用 ATTRN 函數,將資料集代碼為DA之資料集,以’NLOBS’參數,將資料集之總筆數,置於NUM1欄位中,共19筆。
-
NUM2 = ATTRN( DA , 'NLOBSF' ); 運用 ATTRN 函數,將資料集代碼為DA之資料集,以’NLOBSF’參數,將資料集之篩選後筆數,置於NUM2欄位中,共12筆。
-
CALL SYMPUTX('M_TOT_NUM' , NUM1) ; 將資料集之總筆數,置於SAS MACRO變數 M_TOT_NUM中,供後續使用。
-
CALL SYMPUTX('M_WHR_NUM' , NUM2) ; 將資料集之篩選後之筆數,置於SAS MACRO變數 M_WHR_NUM中,供後續使用。
-
RC = CLOSE(DA); 如果前面資料集打開成功,結束前須將此檔案關閉。
Tags