你有沒有遇到過(guò)這樣的情況:明明數(shù)據(jù)量不大,卻因?yàn)橹貜?fù)值太多導(dǎo)致分析結(jié)果“失真”?別急,今天咱們就來(lái)聊聊Stata里那個(gè)超實(shí)用的命令——?jiǎng)h除重復(fù)值!我是老張,一個(gè)在數(shù)據(jù)分析圈摸爬滾打十年的老司機(jī),這篇文章不講理論,只講實(shí)戰(zhàn),看完你就懂了。
Q1:Stata怎么刪除重復(fù)值?最常用的是哪個(gè)命令?
答:用 duplicates drop 命令!這是Stata官方推薦的方法。比如你有一張包含姓名、年齡、收入的數(shù)據(jù)表,發(fā)現(xiàn)有人重復(fù)錄入了兩次,那就可以這樣操作:
duplicates drop name, force這條命令的意思是:“請(qǐng)根據(jù)‘name’這一列,刪掉所有重復(fù)項(xiàng),保留第一次出現(xiàn)的那一行?!奔由?code>force是為了強(qiáng)制執(zhí)行,避免提示確認(rèn)。
Q2:如果我想先看看哪些數(shù)據(jù)重復(fù)了,再?zèng)Q定刪不刪?
答:太聰明了!先用 duplicates report 看一眼,就知道重復(fù)了多少條。舉個(gè)真實(shí)案例:我?guī)团笥亚謇硪环輪柧頂?shù)據(jù)時(shí),發(fā)現(xiàn)有37條記錄的“ID號(hào)”完全一樣,但其他字段略有差異(比如填寫時(shí)間不同)。這時(shí)候我就用了:
duplicates report id輸出顯示:“37 duplicate observations”,我立馬意識(shí)到:這不是數(shù)據(jù)錯(cuò)誤,而是同一人多次提交!于是果斷用 duplicates drop id, force 保留最早那一份,完美解決。
Q3:能不能按多個(gè)變量一起判斷重復(fù)?比如同時(shí)看“姓名+手機(jī)號(hào)”?
答:當(dāng)然可以!Stata支持多變量組合去重。比如:
duplicates drop name phone, force這相當(dāng)于說(shuō):“只要名字和手機(jī)號(hào)都一樣,就算重復(fù)?!蔽以?jīng)處理過(guò)醫(yī)院門診數(shù)據(jù),發(fā)現(xiàn)兩個(gè)醫(yī)生錄了同一個(gè)病人(名字一樣、電話也一樣),但性別不同——這明顯有問題!通過(guò)這個(gè)命令,我快速定位并修正了數(shù)據(jù)源頭。
小貼士:刪除前記得備份!
很多新手一上來(lái)就刪,結(jié)果后悔莫及。建議先保存副本:save "cleaned_data.dta", replace,萬(wàn)一刪錯(cuò)了還能救回來(lái)。我就是吃過(guò)虧的人,現(xiàn)在養(yǎng)成習(xí)慣:每刪一行,先復(fù)制一份原始數(shù)據(jù)。
總結(jié)一下:刪除重復(fù)值不是技術(shù)活,而是細(xì)心活。Stata的duplicates命令就像你的數(shù)據(jù)“過(guò)濾器”,幫你把雜亂變清晰。下次你遇到重復(fù)數(shù)據(jù)時(shí),不妨試試這個(gè)方法——簡(jiǎn)單、高效、還特別適合發(fā)朋友圈炫耀:“看,我又搞定了一堆臟數(shù)據(jù)!”
? 數(shù)據(jù)干凈了,分析才靠譜!我是老張,專注教你用Stata做真正有用的數(shù)據(jù)分析。關(guān)注我,每天一個(gè)小技巧,讓你從“會(huì)用”變成“精通”!

