如何实现?
Thanks作者: shiyiming 时间: 2012-12-21 14:59 标题: Re: 找出每个subject的最新记录 data test;
input subject date date9.;
cards;
1 12DEC2011
2 11DEC2010
1 21OCT2012
3 20NOV2011
2 21DEC2012
;
proc sort data=test out=test1;
by subject descending date;
run;
data test2;
set test1;
by subject descending date;
if first.subject and first.date then flag='Y';
else flag='N';
run;
SQL:
data test;
input subject date date9.;
cards;
1 12DEC2011
2 11DEC2010
1 21OCT2012
3 20NOV2011
2 21DEC2012
;
proc sql;
create table test2 as
select subject,date,
case date
when max(date) then 'Y'
else 'N'
end as flag
from test
group by subject;
quit;作者: shiyiming 时间: 2012-12-26 14:52 标题: Re: 找出每个subject的最新记录 [quote="huazi":23ik7pc8]data test;
input subject date date9.;
cards;
1 12DEC2011
2 11DEC2010
1 21OCT2012
3 20NOV2011
2 21DEC2012
;
proc sort data=test out=test1;
by subject descending date;
run;
data test2;
set test1;
by subject descending date;
if first.subject and first.date then flag='Y';
else flag='N';
run;
SQL:
data test;
input subject date date9.;
cards;
1 12DEC2011
2 11DEC2010
1 21OCT2012
3 20NOV2011
2 21DEC2012
;
proc sql;
create table test2 as
select subject,date,
case date
when max(date) then 'Y'
else 'N'
end as flag
from test
group by subject;
quit;[/quote:23ik7pc8]
首先,谢谢你的答案。
还有另外一个问题,跟这个很类似,但是加了一个条件。
背景:每个人在不同的时间,做不同的测试(也可能在同一天做不同的测试)。
结果要求:找出每个人每个测试的最后一个测试值。作者: shiyiming 时间: 2013-1-6 23:52 标题: Re: 找出每个subject的最新记录 I like mischief.
[code:1suxqsgn]
data ahuige;
input
subject date date9.;
format date date9.;
cards;
1 12DEC2011
2 11DEC2010
1 21OCT2012
3 20NOV2011
2 21DEC2012
;run;
proc sql;
select *,byte((date=max(date))*11+78)
from ahuige
group by subject
order by subject,date
;quit;[/code:1suxqsgn]