2011-10-31 6 views
5

私は1000の観測データセットを持っています。私は最後の観察結果だけをプリントアウトしたい。以下を使用:SASデータセットの最後の観測結果をどのように印刷しますか?

proc print data=apple(firstobs = 1000 obs = 1000); 
run; 

私は最後の観測を得ることができます。しかし、私のデータセットには10​​00回の観測があることを事前に知る必要があります。これを知らずに私はどのようにこれを行うのですか?

+2

こんにちはトレバー、の観測値の数を取得する方法の質問は」データセット」はここで回答しています: http://stackoverflow.com/questions/ 5658994/how-to-detect-a-data-set-has-no-observations-in-sas –

+0

SAS Baseテストのために勉強している人のために頭を上げ、ここで終わりました。そのトリック - LASTOBSオプションのようなものはありません! :) –

答えて

7

これを行う方法はたくさんあります。

proc sql noprint; 
select n(var1) into :nobs 
from apple; 
quit; 

proc print data=apple(firstobs=&nobs); run; 

これはちょうどマクロ変数に観測数を読み込み、それを使って最初の観測値を指定します。 (var1はあなたのデータで変数を参照することに注意してください。)

別のアプローチをのみ、最後の観察を続けるデータビューを作成していることを印刷するには、次のようになります。

data tmp/view=tmp; 
set apple nobs=nobs; 
if _n_=nobs; 
run; 

proc print data=tmp; run; 
1

を見つけるために多くの方法があります。観測数。次のマクロがその一例です。

%macro nobs (dsn); 
    %let nobs=0; 
    %let dsid = %sysfunc(open(&dsn)); 
    %if &dsid %then %let nobs = %sysfunc(attrn(&dsid,nobs)); 
    %let rc = %sysfunc(close(&dsid)); 
    &nobs 
%mend nobs; 

%let n = %nobs(apple); 

proc print data=apple (firstobs=&n obs=&n); run; 
3

私はSETMERGEMODIFY、またはUPDATE文のendオプションは非常に便利だと思います。

data x; 
    do i = 1 to 1000; 
    output; 
    end; 
run; 

data x; 
    set x end = _end; 
    end = _end; 
proc print data = x; 
    where end; 
run; 
0

2つの簡単な解決策があります。

解決方法1:

data result; 
    set apple end=end; 
    if end then output; 
run; 
proc print data=result; 
run; 

解決方法2:

data result; 
    set apple nobs=nobs; 
    if _N_=nobs then output; 
run; 
proc print data=result; 
run; 
関連する問題