SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 695|回复: 4
打印 上一主题 下一主题

两个数据集的合并

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2010-9-14 20:51:08 | 只看该作者

两个数据集的合并

请教大虾, 下面这个数据集如何处理
Data A: code date         a   b  
1              20090101
        …
1        20091231
2        20090101
        …
2         20091231


100         20091231
Data B:  code  sdate
1        20090503
4   20090802
7   20090314
7   20090426

Data A 四列, a, b(3,4列的数值省略),code从1-100, 每个code都有2009年全年的数据,Data B 是Data A 的子集,Data B两列,现在想删除data A 中的不再data B中的code,如code 2,
并且生成 data C: code date        a  b  sdate
                1   20090101        20090503
                …
         1   20091231        20090503
                4   20090101        20090802
                …
         4   20091231        20090802
                7   20090101        20090314
                …
         7   20091231        20090314
                7   20090101        20090426
                ..
               7   20091231          20090426
            …
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2010-9-15 10:09:55 | 只看该作者

Re: 两个数据集的合并

直接由data b 生成;
[code:3u5baw9k]
data b;
input code sdate yymmdd8.;
format sdate yymmddn8.;
cards;
1 20090503
4 20090802
7 20090314
7 20090426
;
run;

data c;
set b;
do m=1 to 12;
     endday=intnx('month',mdy(m,1,2009),0,'end');
     inv=endday-mdy(m,1,2009)+1;
     do  d=1 to inv;
            mydate=mdy(m,d,2009);
                output;
         end;
  end;
format mydate yymmddn8.;
keep code mydate sdate;
run;
[/code:3u5baw9k]

或者用SQL;
[code:3u5baw9k]
proc sql;
create table c as
select b.code,a.mydate,b.sdate from a inner join b
on a.code=b.code;
quit;
[/code:3u5baw9k]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2010-9-15 11:14:10 | 只看该作者

Re: 两个数据集的合并

谢谢nobodyknows, 我用sql试了下,对于data B中只出现 1个代码,1个时间的可以, 但是同一个代码, 2个或者多个时间的得到的data C中 sdate是交替出现, 我想得到的是 例如code 7出现 20090314 和20090506, 那么20090314作为sdate和2009年全年对应, 然后20090506再作为sdate和2009年对应
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2010-9-15 14:01:03 | 只看该作者

Re: 两个数据集的合并

貌似再排个序吧......
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2010-9-16 11:12:31 | 只看该作者

Re: 两个数据集的合并

呵呵,我笨啊
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-3 23:45 , Processed in 0.070545 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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