SAS输出每个ID最大值

问题描述 投票:0回答:1

我觉得我正在使它变得比原本应该的复杂。我下面有一个示例数据集,其中包含一个ID列和一个Counter列。计数器列重置,我想创建一个仅包含计数器列为最大值的行的数据集,然后再次重置。我的数据集也有成千上万个ID,我需要这样做。

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
sas output counter
1个回答
1
投票

[首先为每个非递减的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;
© www.soinside.com 2019 - 2024. All rights reserved.