标题: 两个数据集的合并 [打印本页] 作者: shiyiming 时间: 2010-9-14 20:51 标题: 两个数据集的合并 请教大虾, 下面这个数据集如何处理
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
…作者: shiyiming 时间: 2010-9-15 10:09 标题: 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]作者: shiyiming 时间: 2010-9-15 11:14 标题: Re: 两个数据集的合并 谢谢nobodyknows, 我用sql试了下,对于data B中只出现 1个代码,1个时间的可以, 但是同一个代码, 2个或者多个时间的得到的data C中 sdate是交替出现, 我想得到的是 例如code 7出现 20090314 和20090506, 那么20090314作为sdate和2009年全年对应, 然后20090506再作为sdate和2009年对应作者: shiyiming 时间: 2010-9-15 14:01 标题: Re: 两个数据集的合并 貌似再排个序吧......作者: shiyiming 时间: 2010-9-16 11:12 标题: Re: 两个数据集的合并 呵呵,我笨啊