use sharew5_rel1-0-0_it.dta, clear
// Prepare variables
recode it004_ (1 = 1 "Yes") (5 = 0 "No") (-1 -2 . = .), generate(internetuser)
label var internetuser "Internet use in last 7 days"
decode country, gen(cntry)
// Define stuff
tempname foo
postfile `foo' str25 cntry perc perc_ll perc_ul using "C:\Windows\Temp\test.dta", replace
levelsof cntry, local(levels)
// Calculate proportions by country
foreach country of local levels {
capture proportion internetuser if cntry == "`country'"
matrix fcoefs = r(table)
local fperc = fcoefs[1,2] * 100
local fperc_ll = fcoefs[5,2] * 100
local fperc_ul = fcoefs[6,2] * 100
di "`country'" _skip(2) `fperc_ll' _skip(2) `fperc' _skip(2) `fperc_ul'
if "`fperc'" != "" { // Make sure that the loop doesn't break if empty
post `foo' ("`country'") (`fperc') (`fperc_ll') (`fperc_ul')
}
}
postclose `foo'
// Use posted data set
use "C:\Windows\Temp\test.dta", clear
// Sort countries by size
egen order_ = rank(perc), unique
labmask order_, value(cntry)
// Plot
twoway (dot perc order_, horizontal) ///
(rspike perc_ll perc_ul order_, horizontal), ///
ylabel(1/15, val) legend(off) xscale(range(20 80) alt) ///
ytitle("") xtitle("% Internet users (in last 7 days)") ///
xlabel(20(10)80, grid) ///
note(" " "{it:Source:} SHARE wave 5, doi:10.6103/SHARE.w5.100", span)