7

元のデータセットの最後の n 個の観測のみを使用して、別のデータセットから SAS データセットを作成するにはどうすればよいですか。n の値が分かっていれば簡単です。「n」がわからない場合、どうすればこれを行うことができますか?

4

4 に答える 4

8

これは、必要な観測数を示すマクロ変数があることを前提としています。NOBS は、すべてを読み取らずに、現在のデータセット内の観測数を示します。

%let obswant=5;
data want;
set sashelp.class nobs=obscount;
if _n_ gt (obscount-&obswant.);
run;
于 2013-04-23T14:01:13.517 に答える
4

データセットが大きい場合、データセット全体を読み取りたくない場合があります。代わりに、最初にデータセット内のオブザベーションの総数を読み取る構成を試すことができます。したがって、最後の観測が必要な場合は、次のようにします。

data t;
  input x;
datalines;
1
2
3
4
;

%let dsid=%sysfunc(open(t));
%let num=%sysfunc(attrn(&dsid,nlobs));
%let rc=%sysfunc(close(&dsid));
%let number = 2;

data tt;
set t (firstobs =  %eval(&num.-&number.+1));
run;
于 2013-04-29T09:11:09.117 に答える
4

Joe のマクロ変数の例を使用して、必要な観測数を指定すると、別の答えが得られます。

%let obswant = 10;
data want;
   do _i_=nobs-(&obswant-1) to nobs;
      set have point=_i_ nobs=nobs;
      output;
      end;
   stop;  /* Needed to stop data step */
run;

これは、必要な特定の観測のみを読み取るため、パフォーマンスが向上するはずです。

于 2013-04-23T14:47:56.127 に答える