全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3413 4
2014-06-30
悬赏 5 个论坛币 未解决
SAS新手,麻烦大家帮忙看一下这个问题:现在有两个表,
表a说明一件事情的起止时间:
code  begin          end
1       2010/03      2011/02
2       2004/09      2005/08
3       2004/02      2005/01
4
5

表b是我需要的表格,按照时间顺序排列


portfolio         code
2005/01
2005/02
2005/03
现在要求:if a.begin<=b.portfolio<=a.end,then 输出code。例如,b中2005/01在a中code2,code3的起止范围内,所以b中2005/01,code中输出2和3。输出最好是分开多列的。

不知道怎么写,请教一下各位!
谢谢啦!


二维码

扫码加我 拉你入群

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

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

全部回复
2014-6-30 15:30:48
proc sql;
create table c as
select b.portfolio,a.code
from a,b
where a.begin<=b.portfolio<=a.end;
quit;
二维码

扫码加我 拉你入群

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

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

2014-6-30 16:16:38
楼上,赞!我和楼上一样
data a;
input code begin :$7. end :$7.;
datalines;
1       2010/03      2011/02
2       2004/09      2005/08
3       2004/02      2005/01
;
run;
data b;
input portfolio :$7.;
datalines;
2005/01
2005/02
2005/03
;
proc sql;
create table chk as
select *
from a , b
where begin<=portfolio<=end
;
quit;
proc sort data=chk1;
by portfolio code;
run;
data chk2;
set chk1;
by portfolio code;
if first.portfolio then nord=0;
nord+1;
run;
proc transpose data=chk1 out=wanted(drop=_name_) prefix=out;
by portfolio;
var code;
run;
二维码

扫码加我 拉你入群

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

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

2014-6-30 16:49:32
huntdreamer 发表于 2014-6-30 15:30
proc sql;
create table c as
select b.portfolio,a.code
啊明白意思了,谢谢您!


二维码

扫码加我 拉你入群

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

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

2014-6-30 16:53:47
FB_FLORA 发表于 2014-6-30 16:16
楼上,赞!我和楼上一样
data a;
input code begin :$7. end :$7.;
谢谢!先匹配再transpose,明白了!


二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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