SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 652|回复: 2
打印 上一主题 下一主题

关于first, last数据的提取

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2010-2-5 00:08:29 | 只看该作者

关于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

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

谢谢!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2010-2-5 05:15:57 | 只看该作者

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]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2010-2-5 13:16:42 | 只看该作者

Re: 关于first, last数据的提取

谢谢啊,retain真是个好东西,呵呵。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-6 09:52 , Processed in 0.066950 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表