s*******e 发帖数: 370 | 1 有如下数据,变量有ID和date,都可能有重复。
id date
1 08/12/2005
1 09/13/2005
2 01/09/2005
3 01/08/2005
3 01/08/2005
3 02/09/2005
。。。。
现在想要挑出每个ID的第一个date(时间上最早的),即只包含每个id的第一次date。
如下:
id date
1 08/12/2005
2 01/09/2005
3 01/08/2005
。。。
怎么写呢?是不是要用sql?我不会sql。请大侠指点啊。多谢! |
y********0 发帖数: 638 | 2 是用sql,转置一下,取个最小值就成。
data one;
infile datalines;
input id date mmddyy10.;
datalines;
1 08/12/2005
1 09/13/2005
2 01/09/2005
3 01/08/2005
3 01/08/2005
3 02/09/2005
;
proc transpose data=one out=two;
by id;
run;
proc sql;
select id,min(col1,col2,col3) as mdate format=mmddyy10.
from two;
quit;
【在 s*******e 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 有如下数据,变量有ID和date,都可能有重复。 : id date : 1 08/12/2005 : 1 09/13/2005 : 2 01/09/2005 : 3 01/08/2005 : 3 01/08/2005 : 3 02/09/2005 : 。。。。 : 现在想要挑出每个ID的第一个date(时间上最早的),即只包含每个id的第一次date。
|
a****g 发帖数: 8131 | 3 如果lz的data有3个以上observation,你的code就不能han
dle了
the following codes do the job
proc sort data=one; by id date; run;
data two; set one; by id; if first.id then output; run;
【在 y********0 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 是用sql,转置一下,取个最小值就成。 : data one; : infile datalines; : input id date mmddyy10.; : datalines; : 1 08/12/2005 : 1 09/13/2005 : 2 01/09/2005 : 3 01/08/2005 : 3 01/08/2005
|
y********0 发帖数: 638 | 4 确实是。。不过这个挺容易改的。。
你这个代码挺好。。。
【在 a****g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 如果lz的data有3个以上observation,你的code就不能han : dle了 : the following codes do the job : proc sort data=one; by id date; run; : data two; set one; by id; if first.id then output; run;
|
s*******e 发帖数: 1385 | 5 proc sort data=yourdata;
by id date;
run;
data temp;
set yourdata;
by id;
if first.id;
run;
or
proc sql;
create table as
select id, min(date) as new_date
from yourdata;
group by id
order by id;
quit;
【在 s*******e 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 有如下数据,变量有ID和date,都可能有重复。 : id date : 1 08/12/2005 : 1 09/13/2005 : 2 01/09/2005 : 3 01/08/2005 : 3 01/08/2005 : 3 02/09/2005 : 。。。。 : 现在想要挑出每个ID的第一个date(时间上最早的),即只包含每个id的第一次date。
|
D**u 发帖数: 288 | 6 Good!
【在 s*******e 的大作中提到】![](/moin_static193/solenoid/img/up.png) : proc sort data=yourdata; : by id date; : run; : data temp; : set yourdata; : by id; : if first.id; : run; : or : proc sql;
|
s******0 发帖数: 1269 | |
c******n 发帖数: 380 | 8 proc sql;
create table outdata as select unique id,date from rawdata group by id
having date=min(date);
quit; |
c******n 发帖数: 380 | 9 proc sql;
create table outdata as select unique id,date from rawdata group by id
having date=min(date);
quit; |