SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

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

数据集的并接

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2012-5-21 15:25:31 | 只看该作者

数据集的并接

各位前辈,请教数据集并接的问题。
有两个数据集:有两个相同的变量(高校名称,专业名称),其他变量的都不同。
数据集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;

并接后,都不对。
请各位高人指教!!!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2012-5-23 05:11:35 | 只看该作者

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]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2012-5-24 22:18:38 | 只看该作者

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]
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-6 11:11 , Processed in 0.070924 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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