利用SAS查重后进行多个数据库合并的简单技巧-经管之家官网!

人大经济论坛-经管之家 收藏本站
您当前的位置> 数据>>

数据库

>>

利用SAS查重后进行多个数据库合并的简单技巧

利用SAS查重后进行多个数据库合并的简单技巧

发布:moonstone | 分类:数据库

关于本站

人大经济论坛-经管之家:分享大学、考研、论文、会计、留学、数据、经济学、金融学、管理学、统计学、博弈论、统计年鉴、行业分析包括等相关资源。
经管之家是国内活跃的在线教育咨询平台!

经管之家新媒体交易平台

提供"微信号、微博、抖音、快手、头条、小红书、百家号、企鹅号、UC号、一点资讯"等虚拟账号交易,真正实现买卖双方的共赢。【请点击这里访问】

提供微信号、微博、抖音、快手、头条、小红书、百家号、企鹅号、UC号、一点资讯等虚拟账号交易,真正实现买卖双方的共赢。【请点击这里访问】

经常会遇到合并多个数据库的情况,在数据大的时候还会遇到同一库里面会有重复ID,如何找到重复的ID号?查重后,如何以多个数据库中的一个为主库来合并其他的库?困扰了自己一段时间,现在就自己发现的问题以及解决该 ...
免费学术公开课,扫码加入


经常会遇到合并多个数据库的情况,在数据大的时候还会遇到同一库里面会有重复ID,如何找到重复的ID号?查重后,如何以多个数据库中的一个为主库来合并其他的库?困扰了自己一段时间,现在就自己发现的问题以及解决该问题的简单技巧跟大家分享一下。
遇到这种情况,如果采用SPSS合并数据库的话,会出现一些意想不到的问题。首先,遇到重复ID,利用SPSS早期版本很难发现这一问题,直接提示不能合并,至少自己见过的SPSS 16是发现不了。目前自己所用的SPSS 19(不清楚17和18是否)可以发现此问题,并给出如下提示:
MATCH FILES /FILE=*
/FILE='C:\Users\Administrator\Desktop\**.sav'
/BY ID.
EXECUTE.
File #2
KEY: 1E+013
>Warning # 5132
>Duplicate key in a file.The BY variables do not uniquely identify each case
>on the indicated file.Please check the results carefully.
上面这个例子中,虽然SPSS提示ID有重复,可又提出了另外一个问题,可以发现,在ID号足够长的时候,如上述例子中的13位,SPSS直接采用科学计数法来提示重复的ID号,也不清楚是自己不会设置的原因还是SPSS在该程序内部自动设置科学计数的原因,反正最终我还是没能发现很好的办法让SPSS将重复的ID显示完全。这等于SPSS在对待重复ID上没有实质性的改进,而且每次只能提醒一个ID号,在有多个重复的ID号的时候,还不能一次查出来。所以建议遇到这种情况时采用SAS来查重,并最终合并多个数据库。
采用SAS解决开始提出的问题,需要解决以下几个步骤
1、查找重复的记录数
2、核查后剔除重复的记录数
3、以一个库为主库,合并其他库
针对上述三个问题,分别以三个简单的例子来说明相关方法,
(1)、查找重复的记录数(转载自http://blog.sina.com.cn/s/blog_4b3c1a880100d230.html)
data b;
input id $ a b c;
cards;
001 1220
002 2318
003 3435
004 4540
002 2327
006 5640
004 4560
;
run;
proc summary data=b nway;
class id a b;
output out=c (drop=_type_where=(_freq_>1));
run;
proc print data=c;
run;
结果如下:
Obs id a b _FREQ_
1 002 2 3 2
2 004 4 5 2
(2)核查后剔除重复的记录数(转载自http://blog.sina.com.cn/s/blog_4b3c1a880100d230.html)
仍采用上述例子
proc sort data=b nodupkey out=d;
by id a b;
run;
proc print data=d;
run;
结果:
Obs id a b c
1 001 1 2 20
2 002 2 3 18
3 003 3 4 35
4 004 4 5 40
5 006 5 6 40
(3)、以一个库为主库,合并其他库
该问题主要是由于主库的观测数与其他要合并的数据库的观测数不一致,简单合并会导致最终合并的数据库里面出现很多缺失。也即改步主要目的是根据主库确定缺失记录,并删除缺失记录。
proc sort data=a ;
by id;
run;
……
*数据合并前记得排序;
data combined;
merge a b c;
by id;
if ax1=. then delete;
run;
其中ax1是只有a库中才有的而且没有缺失的变量。当然也有很多其它方法删除缺失,只要能到底目的都行。
希望这篇文章能对大家解决类似问题有所帮助。
「经管之家」APP:经管人学习、答疑、交友,就上经管之家!
免流量费下载资料----在经管之家app可以下载论坛上的所有资源,并且不额外收取下载高峰期的论坛币。
涵盖所有经管领域的优秀内容----覆盖经济、管理、金融投资、计量统计、数据分析、国贸、财会等专业的学习宝库,各类资料应有尽有。
来自五湖四海的经管达人----已经有上千万的经管人来到这里,你可以找到任何学科方向、有共同话题的朋友。
经管之家(原人大经济论坛),跨越高校的围墙,带你走进经管知识的新世界。
扫描下方二维码下载并注册APP
本文关键词:

本文论坛网址:https://bbs.pinggu.org/thread-1410764-1-1.html

人气文章

1.凡人大经济论坛-经管之家转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。