SAS выводит каждое максимальное значение по идентификатору - PullRequest
0 голосов
/ 25 октября 2019

Я чувствую, что делаю это сложнее, чем должно быть. У меня есть образец набора данных ниже со столбцом ID и столбцом Counter. Столбец счетчика сбрасывается, и я хотел бы создать набор данных, содержащий только те строки, в которых столбец счетчика является максимальным значением, прежде чем он будет сброшен снова. В моем наборе данных также есть тысячи идентификаторов, для которых мне нужно было бы сделать это.

data test;
    infile datalines delimiter=",";
    informat    ID $3.
                TCOUNT 10.;             

    input ID $ TCOUNT $  ;

    datalines;
123,1
123,2
123,3
123,4
123,1
123,2
123,3
123,1
123,2

;

run;

, и мой желаемый результат в новой таблице будет выглядеть как ...

   ID    TCOUNT
   123     4
   123     3
   123     2

1 Ответ

1 голос
/ 25 октября 2019

Возможно, будет проще / яснее сначала назначить метку каждому из неубывающих блоков наблюдений TCOUNT.

data groups;
  set test;
  by id ;
  if first.id then group=0;
  if first.id or tcount<lag(tcount) then group+1;
run;

Тогда просто найти последнее наблюдение в каждой группе.

data want;
  set groups;
  by id group;
  if last.group;
run;
...