	// Longitudinal Data for  Kohler/Kreuter
	// Creator kkstata@web.de
	
version 7.0
	clear
	set more off
	set memory 20m
	
	
	// Meta-Data
	// ---------
	
	use hhnr persnr sex gebjahr ?hhnr ?netto using kksoep/ppfad, clear
	
	// Balanced Panel Data
	egen nobs = anycount(?netto), v(1)
	keep if nobs == 19
	drop ?netto nobs
	
	tempfile ppfad
	save `ppfad'
	
	// Life-Satisfaction
	// -----------------
	
	foreach var in  ///
	  ap6801 bp9301 cp9601 dp9801 ep89 fp108 gp109 hp10901 ip10901 jp10901  ///
	  kp10401 lp10401 mp11001 np11701 op12301 pp13501 qp14301 rp13501 sp13501 {
		local stub = substr("`var'",1,1)
		use hhnr `stub'hhnr persnr `var' using kksoep/`stub'p, clear
		sort hhnr `stub'hhnr persnr
		tempfile `stub'p
		save ``stub'p'
	}
	
	
	// Income, Work-Load and Marital Staus (from PSID-Equivalence Files)
	// -----------------------------------------------------------------
	
	local t 84
	foreach stub in a b c d e f g h i j k l m n o p {
		use hhnr `stub'hhnr persnr d11104`t' e11101`t' i11110`t++'  ///
		  using kksoep/`stub'pequiv, clear
		sort hhnr `stub'hhnr persnr
		tempfile `stub'pequiv
		save ``stub'pequiv'
	}

	local t 0
	foreach stub in q r s {
		use  hhnr `stub'hhnr persnr d111040`t' e111010`t' i111100`t++'  ///
		  using kksoep/`stub'pequiv, clear
		sort hhnr `stub'hhnr persnr
		tempfile `stub'pequiv
		save ``stub'pequiv', replace
	}
	
	
	// Merge Files
	// -----------
	
	use `ppfad', clear
	foreach stub in a b c d e f g h i j k l m n o p q r s {
		sort hhnr `stub'hhnr persnr
		merge hhnr `stub'hhnr persnr using ``stub'p', nokeep
		assert _merge == 3
		drop _merge
		
		sort hhnr `stub'hhnr persnr
		merge hhnr `stub'hhnr persnr using ``stub'pequiv', nokeep
		assert _merge == 3
		drop _merge
	}
	
   drop ?hhnr


	label data "GSOEP 1984-2002 randomized (Kohler/Kreuter)"

	preserve
	keep persnr gebjahr  ///
	  ap6801 bp9301 cp9601 dp9801 ep89 fp108 gp109 hp10901 ip10901 jp10901 ///
	  kp10401 lp10401 mp11001 np11701 op12301 pp13501  qp14301 rp13501 ///
	  sp13501 
	save progex, replace
	restore
	
	// Harmonize Variable Names
	// ------------------------
	
	local t 1984 
	foreach var of varlist  ///
	  ap6801 bp9301 cp9601 dp9801 ep89 fp108 gp109 hp10901 ip10901 jp10901 kp10401  ///
	  lp10401 mp11001 np11701 op12301 pp13501  qp14301 rp13501 sp13501 {
		ren `var' lsat`t'
		lab var lsat`t++' "General Life Satisfaction"
	}
	
	local t 1984
	foreach var of varlist  ///
	  d1110484  d1110485  d1110486  d1110487  d1110488  d1110489  d1110490  d1110491  ///
	  d1110492  d1110493  d1110494  d1110495  d1110496  d1110497  d1110498  d1110499  ///
	  d1110400  d1110401  d1110402 {
		ren `var' mar`t++'
	}
	
	local t 1984
	foreach var of varlist  ///
	  e1110184  e1110185  e1110186  e1110187  e1110188  e1110189  e1110190  e1110191  ///
	  e1110192  e1110193  e1110194  e1110195  e1110196  e1110197  e1110198  e1110199  ///
	  e1110100  e1110101  e1110102 {
		ren `var' hour`t++'
	}
	

	local t 1984
	foreach var of varlist  ///
	  i1111084  i1111085  i1111086  i1111087  i1111088  i1111089  i1111090  i1111091  ///
	  i1111092  i1111093  i1111094  i1111095  i1111096  i1111097  i1111098  i1111099  ///
	  i1111000  i1111001  i1111002 {
		ren `var' inc`t++'
	}

	save data2w, replace


   // Create data2agg

	keep persnr lsat* inc*

	reshape long lsat inc, i(persnr) j(wave)
   mvdecode lsat inc, mv(-1)
	collapse lsat inc, by(wave)
	format %2.1f lsat
	
   label data "Mean life satisfaction 1984-2002 (Kohler/Kreuter)"
	label variable wave "Year"
	label variable  lsat "Mean Life satisfaction"
	label variable inc "Mean Individual labor earnings"
	save data2agg, replace

	exit
	
	
