Real ma'lumotlar har doim noto'g'ri yoki to'liq bo'lmaydi. Tozalash zarur!
Bo'sh qiymatlar (Missing values)
* Bo'sh qiymatlarni aniqlash
summarize // N ni tekshiring
mdesc // sst paketi kerak: ssc install mdesc
* Bo'sh qiymat soni
count if maosh == .
count if ism == ""
* Bo'sh qiymatlarni almashtirish
replace maosh = 0 if maosh == .
replace shahar = "Noma'lum" if shahar == ""
* O'rtacha bilan almashtirish
summarize maosh, meanonly
replace maosh = r(mean) if maosh == .
* O'chirish
drop if maosh == .
listwise_del maosh yosh ball // barcha o'zgaruvchilarda bo'lmasa
* Interpolatsiya (vaqt qatori)
ipolate maosh yil, gen(maosh_interp)
Dublikatlar
* Dublikatlarni aniqlash
duplicates report
duplicates report id email
* Ro'yxat
duplicates list
* O'chirish (birinchisini saqlash)
duplicates drop
duplicates drop id, force
* Bitta o'zgaruvchi bo'yicha
duplicates drop email, force
Outlierlar
* Vizual tekshirish
histogram maosh, normal
graph box maosh
* Winsorize (chekish)
winsor maosh, gen(maosh_w) p(0.05) // 5% dan 95%
* Trimming (o'chirish)
summarize maosh, detail
drop if maosh < r(p5) | maosh > r(p95)
* Z-score usuli
summarize maosh
gen z_maosh = (maosh - r(mean)) / r(sd)
drop if abs(z_maosh) > 3
Reshape: Wide dan Long ga
* Wide ma'lumot: har yil uchun alohida ustun
reshape long maosh, i(id) j(yil)
* Long dan Wide ga
reshape wide maosh, i(id) j(yil)
Merge β jadvallarni birlashtirish
* 1:1 birlashtirish
use "asosiy.dta", clear
merge 1:1 id using "qo'shimcha.dta"
drop if _merge == 2 // faqat solda bo'lganlar
* 1:many
merge 1:m id using "tranzaksiyalar.dta"
* Tekshirish
tab _merge
Append β qatorlarni qo'shish
* Ikki faylni vertikal birlashtirish
append using "2024_ma'lumot.dta"
* Bir necha fayl
forvalues y = 2020/2024 {
append using "ma'lumot_`y'.dta"
}