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"
}