// Muster-Loesung Hausaufgabe I // kohler@wzb.eu // 1 Retrival // ---------- // See EOF for a shorter way of SOEP retriving // Process Meta File use persnr ?netto sex gebjahr /// using ../data/ppfad, clear aorder ?netto egen balance = anycount(anetto-snetto), values(1) keep if balance == 19 drop ?netto balance // Merge Date from Panel waves merge persnr using ../data/ap, keep(persnr ap6801) sort nokeep assert _merge == 3 drop _merge merge persnr using ../data/bp, keep(bp9301) sort nokeep assert _merge == 3 drop _merge merge persnr using ../data/cp, keep(cp9601) sort nokeep assert _merge == 3 drop _merge merge persnr using ../data/dp, keep(dp9801) sort nokeep assert _merge == 3 drop _merge merge persnr using ../data/ep, keep(ep89) sort nokeep assert _merge == 3 drop _merge merge persnr using ../data/fp, keep(fp108) sort nokeep assert _merge == 3 drop _merge merge persnr using ../data/gp, keep(gp109) sort nokeep assert _merge == 3 drop _merge merge persnr using ../data/hp, keep(hp10901) sort nokeep assert _merge == 3 drop _merge merge persnr using ../data/ip, keep(ip10901) sort nokeep assert _merge == 3 drop _merge merge persnr using ../data/jp, keep(jp10901) sort nokeep assert _merge == 3 drop _merge merge persnr using ../data/kp, keep(kp10401) sort nokeep assert _merge == 3 drop _merge merge persnr using ../data/lp, keep(lp10401) sort nokeep assert _merge == 3 drop _merge merge persnr using ../data/mp, keep(mp11001) sort nokeep assert _merge == 3 drop _merge merge persnr using ../data/np, keep(np11701) sort nokeep assert _merge == 3 drop _merge merge persnr using ../data/op, keep(op12301) sort nokeep assert _merge == 3 drop _merge merge persnr using ../data/pp, keep(pp13501) sort nokeep assert _merge == 3 drop _merge merge persnr using ../data/qp, keep(qp14301) sort nokeep assert _merge == 3 drop _merge merge persnr using ../data/rp, keep(rp13501) sort nokeep assert _merge == 3 drop _merge merge persnr using ../data/sp, keep(sp13501) sort nokeep assert _merge == 3 drop _merge // 2. Reshape to long // ------------------ aorder ?p* // Nur um sicher zu gehen local i 1984 foreach x of varlist ?p* { ren `x' lsat`i++' } reshape long lsat, i(persnr) j(welle) // 3. Variablen // ------------ replace lsat = .a if lsat == -1 replace lsat = .b if lsat == -2 replace lsat = .c if lsat == -3 // Average Lifesatisfaction 1984--2002 egen lsatmean = mean(lsat), by(persnr) // oder: by persnr, sort: gen lsatmean2 = sum(lsat)/sum(lsat<.) by persnr: replace lsatmean2 = lsatmean2[_N] // Max life satisfaction 1984--2002 egen lsatmax = max(lsat), by(persnr) // oder: gen missing = lsat >= . by missing persnr (lsat), sort: gen lsatmax2 = lsat[_N] by persnr (lsatmax2), sort: replace lsatmax2 = lsatmax2[1] // die Zahl der Veraenderungen von einem Jahr auf das naechste by persnr (welle), sort: gen changes = sum(lsat != lsat[_n-1]) by persnr (welle): replace changes = changes[_N] - 1 by persnr (missing), sort: replace changes = . if missing[_N] // das Jahr mit der h¨ochsten Lebenszufriedenheit by persnr (lsat), sort: gen satyear = welle[_N] if lsat[_N] < . exit Hinweis: Hier ist ein Beispiel-Retrival mit "mkdat" ssc install mkdat mkdat /// ap6801 bp9301 cp9601 dp9801 ep89 fp108 gp109 hp10901 /// ip10901 jp10901 kp10401 lp10401 mp11001 np11701 op12301 /// pp13501 qp14301 rp13501 sp13501 /// using ../data/, netto(1) keep(gebjahr sex) clear /// files(p) waves(a b c d e f g h i j k l m n o p q r s) Also Check out: http://www.panelwhiz.eu