楼主: 带发修行僧
3571 4

请教数据match的问题 [推广有奖]

  • 0关注
  • 0粉丝

大专生

10%

还不是VIP/贵宾

-

威望
0
论坛币
859 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
294 点
帖子
25
精华
0
在线时间
52 小时
注册时间
2007-11-11
最后登录
2024-10-1

楼主
带发修行僧 发表于 2014-7-22 21:55:08 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我现在有两个数据表。 第一个是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


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

扫码加我 拉你入群

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

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

关键词:Match ATCH ATC Mat Available available quarter 数据表

沙发
FB_FLORA 发表于 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;


藤椅
wwang111 发表于 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!

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-24 15:38