全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3477 4
2014-07-22
我现在有两个数据表。 第一个是financial quarter 的数据, 格式如下:reportdate表示的是季报公布的时间

firm    reportdate      size

A         20010523    0.86
A         20010826    0.89
A         20011208    0.75
A         20020406    0.59
B         20080104    2.33
B         20080521    1.79
B         20080724    2.34
.....

第二个数据表示时间发生的时间:

Firm       eventdate   
A           20010723
A           20010806
B           20080605

现在希望为第二个表格中的每一个事件选择available的数据,要求是reportdate必须在eventdate之前,并且是最接近eventdate的时间。也就是说合并之后如下:

firm   eventdate     size     reportdate_mostrecent
A      20010723     0.86        20010523
A      20010806     0.86        20010523
B      20080605     1.79        20080521


请教一下应当如何操作,谢谢~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-7-23 09:22:15
不明白怎么为什么这么显示,但是input语句中的 firm reportdate eventdate 后面都有跟着dollar符
data report;
input firm $ reportdate $  size;
datalines;
A         20010523    0.86
A         20010826    0.89
A         20011208    0.75
A         20020406    0.59
B         20080104    2.33
B         20080521    1.79
B         20080724    2.34
;
data event;
input firm $ eventdate $ ;
datalines;
A           20010723
A           20010806
B           20080605
;
proc sql;
create table match1 as
select a.firm , a.eventdate ,b.size , b.reportdate
from report b , event a
where a.firm=b.firm and a.eventdate>b.reportdate
order by  a.firm , a.eventdate , b.reportdate
;
quit;
data wanted;
set match1;
by firm eventdate reportdate;
if last.eventdate;
run;


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-7-23 09:47:09
proc sql;
create table wanted(drop=absdate) as
select *, input(eventdate,yymmdd10.)-input(reportdate,yymmdd10.)+1 as absdate from
(select a.*, b.eventdate from a,b
where a.firm=b.firm and reportdate<eventdate)
group by firm, eventdate
having absdate=min(absdate);
quit;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-7-23 20:45:15
FB_FLORA 发表于 2014-7-23 09:22
不明白怎么为什么这么显示,但是input语句中的 firm reportdate eventdate 后面都有跟着dollar符
data rep ...
非常谢谢,很及时,很好用!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-7-23 20:45:50
wwang111 发表于 2014-7-23 09:47
proc sql;
create table wanted(drop=absdate) as
select *, input(eventdate,yymmdd10.)-input(report ...
谢谢,很简练的code!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群