[英]SELECT DISTINCT ON in SAS PROC SQL
我该如何选择ALL ROWS,并且在哪里存在一个行,然后再选择一次,(基于ID)只需取一个(与哪一个无关)。
所以我有:
ID name val
===========
1 | aa | 32
2 | aa | 32
3 | ad | 32
3 | zy | 11
4 | rr | 21
5 | oi | 44
5 | df | 11
结果应该是
ID name val
===========
1 | aa | 32
2 | aa | 32
3 | zy | 11
4 | rr | 21
5 | df | 11
5 | df | 11
没关系 5 | df | 11
5 | df | 11
或5 | oi | 44
5 | oi | 44
取5 | oi | 44
。
在Postgres上, SELECT DISTINCT ON ID
选择范围是我的选择。
提前谢谢了
最方便的方法是使用Proc Sort:
PROC SORT DATA=HAVE OUT=WANT NODUPKEY;
BY ID;
RUN;
否则,如果它是预先排序的,则@Reeza的解决方案很好。 如果您必须使用Proc SQL,则可能需要实现一个未添加的功能:monotonic():
PROC SQL;
CREATE TABLE WANT AS
SELECT * FROM HAVE
GROUP BY ID
HAVING MONOTONIC()=MIN(MONOTONIC());
QUIT;
SAS数据步骤答案,使用优先/最后处理
data want;
set have;
by id;
if first.id;
run;
使用proc sql:
proc sql;
select id, max(name) as maxName, val
from work.table
group by id, val;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.