SAS中文论坛

标题: 关于first, last数据的提取 [打印本页]

作者: shiyiming    时间: 2010-2-5 00:08
标题: 关于first, last数据的提取
我的数据集大概如下:
com  date         trade
A     20060201    .
A     20060203    5
A     20070508    .
B     20030208    2
B     20030605    .
B     20040702    6
B     20050703    8


我想输出每个com第一个trade发生的时间,如:
com firsttrade lasttrade
A     20060203 20060203
B     20030208 20050703

请问有什么简单的办法可以实现么?

谢谢!
作者: shiyiming    时间: 2010-2-5 05:15
标题: Re: 关于first, last数据的提取
[code:377786k8]data a;
input com $ date yymmdd8. trade;
format date yymmdd10.;
cards;
A 20060201 .
A 20060203 5
A 20070508 .
B 20030208 2
B 20030605 .
B 20040702 6
B 20050703 8
;
proc sort; by com date; run;
data b;
        set a(where = (^missing(trade)));
        by com;
        retain firstTrade;
        if first.com then firstTrade = date;
        if last.com then lastTrade = date;
        if last.com;
        format firstTrade lastTrade yymmdd10.;
        drop date trade;
        run;

proc print; run;[/code:377786k8]
作者: shiyiming    时间: 2010-2-5 13:16
标题: Re: 关于first, last数据的提取
谢谢啊,retain真是个好东西,呵呵。




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2