SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

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

请教查找合并问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2010-4-21 13:43:07 | 只看该作者

请教查找合并问题

我有两个数据集,想把数据集B中的amt加到A中,条件是同一家com,date在effectdate和上一个effectdate之间,考虑过sql里面where a.com=b.com and lag(b.effectdate)<a.date<=b.effectdate,但是问题是每家com的第一个lag(effectdate)是missing value,这时应怎么办?SAS里面missing date是个啥值?请大牛们指教,谢谢!

A:
com date
1     20010201
1     20010302
1     20020508
2     20030102
2     20030105
3     20060203
...

B:
com effectdate  amt
1      20020202   10
1      20030101   15
2      20030104   20
2      20050101   30
3      20070101   14
...

合并后:
com date           amt
1     20010201     10
1     20010302     10
1     20020508     15
2     20030102     20
2     20030105     30
3     20060203     14
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2010-4-21 15:46:40 | 只看该作者

Re: 请教查找合并问题

[code:17nroeyc]data a;
        input com date yymmdd8.;
        format date yymmdd10.;
datalines;
1 20010201
1 20010302
1 20020508
2 20030102
2 20030105
3 20060203
;
data b;
        input com effectdate yymmdd8. amt;
        format effectdate yymmdd10.;
datalines;
1 20020202 10
1 20030101 15
2 20030104 20
2 20050101 30
3 20070101 14
;
data temp_b;
        set b;
        by com;
        start=lag(effectdate);
        if first.com then start=0;
        rename effectdate=end;
        format start yymmdd10.;
run;
proc sql;
        create table c as
                select a.com,date,amt
                        from a a left join temp_b b
                                on a.com=b.com and start<date<=end
                        order by a.com,date;
quit;[/code:17nroeyc]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2010-4-21 16:09:06 | 只看该作者

Re: 请教查找合并问题

原来可以设成0,圡了,谢谢hope大神!

那如果有1960年以前的日子咋办呢?SAS里面1960年1月1日以前date的数值是负的吧?这个问题纯属好奇,我的数据没那么早。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-4 06:45 , Processed in 0.116968 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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