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()函数进行排序,但我真的在寻找避免此步骤的解决方案。另外,我想在分组处理中使用firstandlast关键字。

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 回答