SAS中文论坛
标题:
数据集的并接
[打印本页]
作者:
shiyiming
时间:
2012-5-21 15:25
标题:
数据集的并接
各位前辈,请教数据集并接的问题。
有两个数据集:有两个相同的变量(高校名称,专业名称),其他变量的都不同。
数据集a1的观察大致是:年份从2005—2011、每年招生的学校、专业、人数、。。。等等)
这里只列举部分学校和专业。
data a1;
input gaoxiao :$20. zhuanye :$20. year fenshu;
cards;
北京交通大学 交通运输 2011 614
北京交通大学 信息与通信工程 2011 619
哈尔滨工程大学 电子信息科学 2011 594
哈尔滨工程大学 船舶与海洋工程 2011 597
南京理工大学 自动化 2011 619
北京交通大学 信息与通信工程 2010 623
哈尔滨工程大学 船舶与海洋工程 2010 601
北京交通大学 信息与通信工程 2009 630
;
run;
/*数据集A2如下:学校、专业、重点学科等级*/
data a2;
input gaoxiao :$20. zhuanye :$20. denji :$20.;
cards;
北京交通大学 交通运输工程 国家二级学科
北京交通大学 信息与通信工程 国家一级学科
哈尔滨工程大学 船舶与海洋工程 国家一级学科
南开大学 微生物学 国家二级学科
;
run;
请教各位前辈!如何将两个数据集合并?
1、想将两数据集并接,按照同高校、同专业匹配的并接在一行。
如果不同就串接在数据集中,同时保留数据集a1的其他内容。
2、能不能将“交通运输”和“交通运输工程”这种类似的专业并接在一起。
谢谢各位!!!
之前有几位高人告诉我了几个方法:
1、
proc sql;
create table merge as
select coalesce(a1.gaoxiao,a2.gaoxiao) as gaoxiao, coalesce(a1.zhuanye,a2.zhuanye) as zhuanye,year,fenshu,denji
from a1 full join a2
on a1.gaoxiao=a2.gaoxiao and a1.zhuanye=a2.zhuanye;
quit;
2、
proc sort data=a1;by gaoxiao zhuanye;run;
proc sort data=a2;by gaoxiao zhuanye;run;
data merge_a1_a2;
merge a1 a2;
by gaoxiao zhuanye;
run;
并接后,都不对。
请各位高人指教!!!
作者:
shiyiming
时间:
2012-5-23 05:11
标题:
Re: 数据集的并接
[code:3jphtwes]proc sql;
create table merge as
select d1.gaoxiao, d2.zhuanye,year,fenshu,denji
from a1 d1 left join a2 d2
on d1.gaoxiao=d2.gaoxiao and d1.zhuanye=d2.zhuanye;
quit;
proc sort data=a1;by gaoxiao zhuanye;run;
proc sort data=a2;by gaoxiao zhuanye;run;
data merge_a1_a2;
merge a1(in=in1) a2;
by gaoxiao zhuanye;
if in1;
run;[/code:3jphtwes]
作者:
shiyiming
时间:
2012-5-24 22:18
标题:
Re: 数据集的并接
[code:2kafqssr]
data a1;
input gaoxiao :$20. zhuanye :$20. year fenshu;
ith=_n_;
cards;
北京交通大学 交通运输 2011 614
北京交通大学 信息与通信工程 2011 619
哈尔滨工程大学 电子信息科学 2011 594
哈尔滨工程大学 船舶与海洋工程 2011 597
南京理工大学 自动化 2011 619
北京交通大学 信息与通信工程 2010 623
哈尔滨工程大学 船舶与海洋工程 2010 601
北京交通大学 信息与通信工程 2009 630
;
run;
/*数据集A2如下:学校、专业、重点学科等级*/
data a2;
input gaoxiao :$20. zhuanye :$20. denji :$20.;
jth=_n_;
cards;
北京交通大学 交通运输工程 国家二级学科
北京交通大学 信息与通信工程 国家一级学科
哈尔滨工程大学 船舶与海洋工程 国家一级学科
南开大学 微生物学 国家二级学科
;
run;
proc sql noprint;
create table a3 as
select * from a1
join a2
on a1.gaoxiao=a2.gaoxiao and a1.zhuanye=a2.zhuanye;
quit;
proc sql noprint;
create table a4 as
select *
from a1
where ith not in (
select ith
from a3
);
quit;
proc sql noprint;
create table a5 as
select *
from a2
where jth not in (
select jth
from a3
);
quit;
data a6;
set a3 a4 a5;
drop ith jth;
run;
[/code:2kafqssr]
欢迎光临 SAS中文论坛 (http://www.mysas.net/forum/)
Powered by Discuz! X3.2