是否有可能在特定组内按顺序删除重复的记录,并仅使用4GL (SAS)输出其中的最后一个(基于od日期)?我有这样的数据:
data example;
input obs id dt value WANT_TO_SELECT;
cards;
1 10 1 500 0
2 10 2 750 1
3 10 3 750 1
4 10 4 750 0
5 10 5 500 0
6 20 1 150 1
7 20 2 150 0
8 20 3 370 0
9 20 4 150 0
;
run;
正如您所看到的,对于id=10
,我希望只有一条(最后一条)记录,值为750,因为有一个在另一个之后,而值500可以是两次,因为它们是分开的。我试图使用最后/第一个,但我不确定如何排序数据。
看起来像是BY语句的NOTSORTED关键字的用例。这将允许您使用VALUE作为BY变量,即使数据实际上不是按VALUE排序的。这是最后一条路。可以使用VALUE标志
data want;
set example;
by id value notsorted;
if last.value;
run;
结果:
WANT_TO_
Obs obs id dt value SELECT
1 1 10 1 500 0
2 4 10 4 750 0
3 5 10 5 500 0
4 7 20 2 150 0
5 8 20 3 370 0
6 9 20 4 150 0