Skip to content

Instantly share code, notes, and snippets.

@randrescastaneda
Last active March 27, 2020 18:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save randrescastaneda/a452495c59bee14db29481336d4d85d6 to your computer and use it in GitHub Desktop.
Save randrescastaneda/a452495c59bee14db29481336d4d85d6 to your computer and use it in GitHub Desktop.
Merge CPI data in datalibweb to povclanet data... work in progress
*##s
pcn load price, clear
keep countrycode year ref_year survname coverage datatype
tempfile pf
save `pf'
pcn load cpi, clear
replace ref_year = year if ref_year == .
replace year = year + 1 if survname == "EU-SILC"
replace levelnote = lower(levelnote)
replace levelnote = "urban" if countrycode == "ARG"
replace levelnote = "urban" if countrycode == "URY" & year <= 2005
drop coverage
gen coverage = cond(levelnote == "rural", "R", /*
*/ cond(levelnote == "urban", "U", "N"))
merge 1:1 countrycode year ref_year survname coverage using `pf'
tempfile mf m3
save `mf'
keep if _merge == 3
drop _merge
save `m3'
* update reference year based on price framework data
use `mf'
keep if _merge == 1
drop _merge
merge 1:1 countrycode year survname coverage using `pf', replace update keep(1 3 4 5)
tempfile mf2
save `mf2'
keep if inlist(_merge, 4, 5)
drop _merge
append using `m3'
save `m3', replace
* update survey name
use `mf2', clear
keep if _merge == 1
drop _merge
levelsof countrycode, local(countries) clean sep("|")
preserve
use `pf', clear
keep if regexm(countrycode, "`countries'")
tempfile pf2
save `pf2'
restore
merge m:1 countrycode year ref_year coverage using `pf2', replace update keep(1 3 4 5)
tempfile mf3
save `mf3'
keep if inlist(_merge, 4, 5)
drop _merge
append using `m3'
save `m3', replace
* Update coverage
use `mf3', clear
keep if _merge == 1
drop _merge
levelsof countrycode, local(countries) clean sep("|")
levelsof year, local(years) clean sep("|")
preserve
use `pf', clear
keep if regexm(countrycode, "`countries'")
keep if regexm(strofreal(year), "`years'")
save `pf2', replace
restore
merge m:1 countrycode year ref_year survname using `pf2', replace update keep(1 3 4 5)
drop _merge
append using `m3'
* Fix issue with PHL
tempvar exp
expand 2 if countrycode == "PHL" & inlist(year, 2000, 2015), gen(`exp')
replace datatype = "i" if `exp' == 1 & inlist(year, 2000, 2015)
replace datatype = "c" if `exp' == 0 & countrycode == "PHL" & inlist(year, 2000, 2015)
replace datatype = "i" if countrycode == "PHL" & inrange(year, 2003, 2012)
* income and consumption in MEX
tempvar exp
expand 2 if countrycode == "MEX" & year >= 1992, gen(`exp')
replace datatype = "c" if `exp' == 1
* Income and consumption in NIC
tempvar exp
expand 2 if countrycode == "NIC" & inrange(year, 1993, 2005) , gen(`exp')
replace datatype = "c" if `exp' == 1
* I/C in HTI
tempvar exp
expand 2 if countrycode == "HTI" & year == 2012 , gen(`exp')
replace datatype = "i" if `exp' == 1
* assume consumtpion for those with no information
replace datatype = "c" if datatype == ""
gen datayear = strofreal(ref_year,"%6.2f")
replace datatype = cond(lower(datatype) == "i", "2", "1")
destring datatype, replace
gen coveragetype = cond(coverage == "U", 2, /*
*/ cond(coverage == "R", 1 , 3))
replace coveragetype = 4 if inlist(countrycode, "IND", "IDN", "CHN") /*
*/ & coveragetype == 3
* hardcoded cleaning
drop if countrycode == "GEO" & year == 1997 & survname != "SGH"
drop if countrycode == "RUS" & year == 2001 & survname != "RLMS"
drop if countrycode == "BRA" & year >= 2012 & survname == "PNAD"
keep countrycode year datayear coveragetype datatype cpi2011 icp2011 ccf cur_adj survname
* fix discrepancies
duplicates drop
duplicates report countrycode year datayear coveragetype datatype
replace year = year - 1 if survname == "EU-SILC" // revert change
replace year = year - 1 if countrycode == "MKD" & survname == "SILC-C"
replace year = year - 1 if countrycode == "MNE" & survname == "SILC-C"
replace year = year - 1 if countrycode == "MYS" & year >= 2009
replace year = year - 1 if countrycode == "TZA" & year == 2018
replace year = 2014 if countrycode == "COM" & year == 2013
tempfile cpi
save `cpi'
save "cpi_to_povcalnet.dta", replace
povcalnet, clear
gen dyear = strofreal(datayear,"%6.2f")
rename (dyear datayear) (datayear dyear)
* Manual adjustments
replace coveragetype = 2 if countrycode == "BOL" & year == 1992
replace coveragetype = 2 if countrycode == "URY" & year <= 2005
replace coveragetype = 3 if countrycode == "ECU" & year == 1998
replace year = year + 1 if countrycode == "COM" & year == 2013
merge 1:1 countrycode year coveragetype datatype /*
*/ using "cpi_to_povcalnet.dta", keep(1 3) nogen
exit
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment