全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2033 4
2014-07-25
请教各位大神:

本人现在有两个表,要求是给表a中的每一个observation在表b中找到match的observation。表如下:

表a:

firm    day       size         bm
A        26       165       0.97   
B        120     549       1.35
C        45       236       0.65


表b:

firm    day       size          bm
D       56       365         1.17   
E       20        90          0.96
F       23       139         0.64



配对的要求是  (1)day的绝对值差别不大于20天;(2)size的差别在50%到150%; (3)bm最接近

举个例子,对于表a中的公司A,我们可以看到表b中的公司E是匹配的observaton,根据三个条件:(1)day的差别为6天;E的size在A的50%到150%之间;(3)E的bm是满足条件的公司中bm最接近A的(F符合前两个条件,但bm与A相差较大)。

谢谢了

二维码

扫码加我 拉你入群

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

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

全部回复
2014-7-25 17:10:40
复制代码
二维码

扫码加我 拉你入群

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

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

2014-7-27 09:41:15
mingfeng07 发表于 2014-7-25 17:10
One sql will be sufficient.

data a;
input firm $ day size   bm;
cards;
A        26       165       0.97   
B        120     549       1.35
C        45       236       0.65
;
run;

data b;
input firm  $  day   size  bm;
cards;
D       56       365         1.17   
E       20        90          0.96
F       23       139         0.64
;
run;

proc sql;
   select a.firm as firm_a,b.firm as firm_b
   from a a , b b
   where abs(a.day-b.day)<=20  
   and 0.5<=b.size/a.size<=1.5
   group by firm_a
   having abs(a.bm-b.bm)=min(abs(a.bm-b.bm))
   ;
   quit;
二维码

扫码加我 拉你入群

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

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

2014-7-28 06:47:12
bobguy 发表于 2014-7-27 09:41
One sql will be sufficient.

data a;
非常谢谢!
二维码

扫码加我 拉你入群

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

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

2014-7-28 06:48:15
mingfeng07 发表于 2014-7-25 17:10
非常感谢!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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