2013-11-28 64 views
0

我想確定數據集中觀察值的數量,然後將此數字轉換爲可用作循環一部分的宏變量。我在網上搜索了答案,沒有多少運氣。我會張貼我嘗試過的一些示例代碼,但我幾乎不知道如何處理這個問題。將數據集中觀察值的數量轉換爲宏變量

有人可以協助嗎?

感謝

克里斯

回答

0

這就是:

創建宏變量:

data _null_; 
    set sashelp.class; 
    call symput("nbobs",_N_); 
run; 

見結果:

%put &nbobs; 

使用它:

data test; 
    do i = 1 to &nbobs; 
     put i; 
    end; 
run; 
3

SAS分別存儲數據集信息,例如觀察次數,所以關鍵是訪問這些信息而不必讀取整個數據集。 下面的代碼將做到這一點,if 0部分從不是真的,所以數據集不會被讀取,但是信息是。

data _null_; 
if 0 then set sashelp.class nobs=n; 
call symput('numobs',n); 
stop; 
run; 

%put n=&numobs; 
1

您也可以從dictionary.tables得到這樣的:

proc sql noprint; 
select nobs into :nobs 
from dictionary.tables 
where libname='YourLibrary' and memname='YourDatasetName'; 
quit;