按 SAS 分组 - 选择多个观测值
Group By SAS - Selecting Multiple Obs
我正在尝试select以下观察组中的所有最新日期
全部数据
ID Date <br/>
1 02/01/2015 <br/>
1 02/01/2015 <br/>
1 02/01/2015 <br/>
1 01/01/2015 <br/>
1 01/01/2015 <br/>
1 01/01/2015 <br/>
2 04/01/2014 <br/>
2 04/01/2014 <br/>
2 04/01/2014 <br/>
2 05/01/2014 <br/>
2 05/01/2014 <br/>
2 05/01/2014 <br/>
我已经尝试了 IF.FIRST & LAST 等..但是我只是不断获得第一个 obs 例如....
数据错误
ID Date <br/>
1 02/01/2015 <br/>
2 04/01/2014 <br/>
我追求的是...
子集数据
ID Date <br/>
1 02/01/2015 <br/>
1 02/01/2015 <br/>
1 02/01/2015 <br/>
2 04/01/2014 <br/>
2 04/01/2014 <br/>
2 04/01/2014 <br/>
希望有人能帮忙!
非常感谢!
您可以使用 proc sql
执行此操作。 SQL 语句是:
select t.*
from fulldata t
where t.date = (select max(t2.date) from fulldata t2);
编辑:
如果您想要每个 id
的最大日期,只需使用相关子查询:
select t.*
from fulldata t
where t.date = (select max(t2.date) from fulldata t2 where t2.id = t.id);
此解决方案可能适用于您已有的解决方案。获取您的 WrongData 并与您的 FullData 合并以获得所需的输出。
data Want;
merge FullData WrongData (in=A);
by id date;
if A;
run;
我正在尝试select以下观察组中的所有最新日期
全部数据
ID Date <br/>
1 02/01/2015 <br/>
1 02/01/2015 <br/>
1 02/01/2015 <br/>
1 01/01/2015 <br/>
1 01/01/2015 <br/>
1 01/01/2015 <br/>
2 04/01/2014 <br/>
2 04/01/2014 <br/>
2 04/01/2014 <br/>
2 05/01/2014 <br/>
2 05/01/2014 <br/>
2 05/01/2014 <br/>
我已经尝试了 IF.FIRST & LAST 等..但是我只是不断获得第一个 obs 例如....
数据错误
ID Date <br/>
1 02/01/2015 <br/>
2 04/01/2014 <br/>
我追求的是...
子集数据
ID Date <br/>
1 02/01/2015 <br/>
1 02/01/2015 <br/>
1 02/01/2015 <br/>
2 04/01/2014 <br/>
2 04/01/2014 <br/>
2 04/01/2014 <br/>
希望有人能帮忙!
非常感谢!
您可以使用 proc sql
执行此操作。 SQL 语句是:
select t.*
from fulldata t
where t.date = (select max(t2.date) from fulldata t2);
编辑:
如果您想要每个 id
的最大日期,只需使用相关子查询:
select t.*
from fulldata t
where t.date = (select max(t2.date) from fulldata t2 where t2.id = t.id);
此解决方案可能适用于您已有的解决方案。获取您的 WrongData 并与您的 FullData 合并以获得所需的输出。
data Want;
merge FullData WrongData (in=A);
by id date;
if A;
run;