哈喽,诸君安。爬虫俱乐部第五届Stata编程技术培训报名已进入倒计时,进入倒计时,进入倒计时,重要的事情重复说,那重要的数据重复了怎么办呢?
问题
在进行数据合并处理之后,通常会发现数据中会出现重复的数据,而这些重复数据是没有什么用处的,需要我们删除这些重复的值,所以在数据处理时,删除重复值是很重要。
方法
处理重复值我们会用到duplicates命令。下面是duplicates的几个常用命令:
duplicates report [varlist] [if] [in]//报告某个变量出现的次数
duplicateslist [varlist] [if] [in] [,options]//列出重复的变量
duplicates tag [varlist] [if] [in] , generate(newvar)//生成一个新变量,当某一行数据为重复值时,生成的新变量值为1,否则为0
duplicates drop[if] [in]//删掉重复值,同时保留下每一组重复值中的第一行数据
栗子
如果某两行数据完全相同时,也就是真正意义上的重复值,这时候也是最简单的处理方法。
我们现有一个下图所示的数据,可以看出,第三行和第四行、第六行和第七行是完全重复的,所以我们需要把重复行删除。
当然,如果我们的数据量特别大,不能一下子看出是否有重复值时,可以借助duplicates report、duplicates list和duplicates tag命令。
duplicates report
duplicates list
duplicates tag, generate(dup)
接下来就是要删除重复变量了,也就是要用到duplicates drop命令。
这样重复值就成功被删除了。
上个例子中,是整行数据都重复的情况,但我们经常会遇到不是整行数据都重复的情况,比如下图,id和year是重复的,但是age变量并没有重复。
用duplicates report、duplicates list和duplicates tag命令之后显示并没有重复值。
但我们还是希望同一个id,同一year,只保留一行,如果我们继续像上面那样,用duplicates drop id