由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Statistics版 - 问SAS code怎么写
相关主题
[合集] 请教:SAS helphelp:data manipulation
如何将SAS DATA中的变量名改名(不知道原变量名的前提下)A SAS Data Question
SAS code help问个比较具体的算法问题
SAS 编程问题 (有包子)请教两个关于SAS的问题
Please help with a SAS macrosas date variable exchange
请教大家一个SAS问题SAS 问题
请教一个SQL 的问题请问base(123题)的第114题
[合集] 如何用SAS把几个colume的值连接在一起问一个简单的SAS问题,多谢
相关话题的讨论汇总
话题: date话题: 2005话题: proc话题: sql话题: 01
进入Statistics版参与讨论
1 (共1页)
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 的大作中提到】
: 有如下数据,变量有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 的大作中提到】
: 是用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 的大作中提到】
: 如果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 的大作中提到】
: 有如下数据,变量有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 的大作中提到】
: proc sort data=yourdata;
: by id date;
: run;
: data temp;
: set yourdata;
: by id;
: if first.id;
: run;
: or
: proc sql;

s******0
发帖数: 1269
7
为什么不直接在sql里面sort呢?
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;
1 (共1页)
进入Statistics版参与讨论
相关主题
问一个简单的SAS问题,多谢Please help with a SAS macro
2013 January 刚考过SAS Adv请教大家一个SAS问题
sas help!!请教一个SQL 的问题
请教SAS ODS to Excel[合集] 如何用SAS把几个colume的值连接在一起
[合集] 请教:SAS helphelp:data manipulation
如何将SAS DATA中的变量名改名(不知道原变量名的前提下)A SAS Data Question
SAS code help问个比较具体的算法问题
SAS 编程问题 (有包子)请教两个关于SAS的问题
相关话题的讨论汇总
话题: date话题: 2005话题: proc话题: sql话题: 01