如何解决每组返回最近日期的观察值
我尝试了以下代码,但不幸的是,它在少数几个地方进行了检查,但并非全部。
proc sql;
create table AgedPrep AS
SELECT *,MAX(report_date) AS Latest_dt format date9.
FROM WORK.What_We_Have
GROUP BY Name
;
quit;
proc sql;
create table Aged_Want AS
SELECT *
FROM WORK.AgedPrep
Where Latest_dt = report_date
;
quit;
我们有以下数据
Name Report_Date Outcome
Brian 11/12/13 good
Brian 11/14/14 bad
sussie 9/12/20 good
sussie 12/11/19 bad
我们想要以下
Name Report_Date Outcome
Brian 11/14/14 bad
sussie 9/12/20 good
非常经典,每个组仅选择日期最近的行。我以前已经正确了,但现在似乎无法理解。
在此先感谢您的帮助
解决方法
这是使用基本SAS代码的简单版本。
proc sort data=have;
by name descending report_date;
data want;
set have;
by name;
if first.name;
run;
,
使用having
子句和SAS SQL自动重新合并。当存在GROUP BY
示例:
create table want AS
SELECT *
from have
group by name
having report_date = max(report_date)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。