0

データがグループ化されているが順序が正しくない場合に、SASでグループ処理を使用する方法はありますか?

data sample;
  input x;
  datalines;
3
3
1
1
2
2
;
run;

各グループの最初の部分を印刷してみてください。

data _null_;
  set sample;
  by x;
  if first.x then do;
    put _all_;
  end;
run;

次のエラーが発生します。

x=3 FIRST.x=1 LAST.x=0 _ERROR_=0 _N_=1
ERROR: BY variables are not properly sorted on data set WORK.SAMPLE.
x=3 FIRST.x=1 LAST.x=0 _ERROR_=1 _N_=2
NOTE: The SAS System stopped processing this step because of errors.
NOTE: There were 3 observations read from the data set WORK.SAMPLE.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.00 seconds

繰り返しになりますが、グループ化されたデータを最初に並べ替えたくないので、この順序で処理する必要があります。retain中間データステップとステートメントまたは関数の いずれかを使用してソートするプロキシ変数を作成できることは知っていlag()ますが、このステップを回避するソリューションを本当に探しています。firstまた、グループごとの処理でandlastキーワードを使用したいと思います。

4

1 に答える 1

5

BYステートメントでNOTSORTEDオプションを使用します。

data _null_;
   set sample;
     by x NOTSORTED;
   if first.x then do;
      put _all_;
      end;
run;
于 2012-08-10T18:03:03.140 に答える