我觉得我正在使它变得比原本应该的复杂。我下面有一个示例数据集,其中包含一个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
[首先为每个非递减的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;