私は1000の観測データセットを持っています。私は最後の観察結果だけをプリントアウトしたい。以下を使用:SASデータセットの最後の観測結果をどのように印刷しますか?
proc print data=apple(firstobs = 1000 obs = 1000);
run;
私は最後の観測を得ることができます。しかし、私のデータセットには1000回の観測があることを事前に知る必要があります。これを知らずに私はどのようにこれを行うのですか?
私は1000の観測データセットを持っています。私は最後の観察結果だけをプリントアウトしたい。以下を使用:SASデータセットの最後の観測結果をどのように印刷しますか?
proc print data=apple(firstobs = 1000 obs = 1000);
run;
私は最後の観測を得ることができます。しかし、私のデータセットには1000回の観測があることを事前に知る必要があります。これを知らずに私はどのようにこれを行うのですか?
これを行う方法はたくさんあります。
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;
を見つけるために多くの方法があります。観測数。次のマクロがその一例です。
%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;
私はSET
、MERGE
、MODIFY
、または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;
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;
こんにちはトレバー、の観測値の数を取得する方法の質問は」データセット」はここで回答しています: http://stackoverflow.com/questions/ 5658994/how-to-detect-a-data-set-has-no-observations-in-sas –
SAS Baseテストのために勉強している人のために頭を上げ、ここで終わりました。そのトリック - LASTOBSオプションのようなものはありません! :) –