Jul 10, 2017

Random graphs (102): Sparklines


use v151 year ost_west if ost_west == 1 using ZA4582_v1-0-0.dta, clear

// Year
label drop year
label var year ""

// Subjective social class
recode v151 (9 = .a "No response") ///
            (8 = .b "Don't know") ///
            (7 = .c "Refused") ///
            (6 = .d "None of the strata") ///
            (5 =  5 "Upper class") ///
            (4 =  4 "Upper middle class") ///
            (3 =  3 "Middle class") ///
            (2 =  2 "Working class") ///
            (1 =  1 "Lower class") ///
           , gen(subjclass)
label var subjclass "Subjective social class"

qui tab subjclass, gen(subjx)

  // Change value labels in bulk
foreach var of varlist subjx* {
  local lab `: var label `var''
  local lab `: di subinstr("`lab'", "subjclass==", " ", 1)'
  label var `var' "`lab'"
}

// Collapse data set
  // Copy variable labels before collapse
  // Following:
  // http://www.stata.com/support/faqs/data-management/keeping-same-variable-with-collapse/
foreach var of var subjx* {
  local l`var' : variable label `var'
  if `"`l`var''"' == "" {
  local l`var' "`var'"
  }
}
  // Collapse 
collapse subjx*, by(year)
  // Restore value labels after collapse  
foreach var of var subjx* {
  label var `var' "`l`var''"
 }

 // Change to percentages
 foreach var of var subjx* {
   replace `var' = `var' * 100
 }
 
// Sparklines 
sparkline subjx* year, variablelabels xlabel(1980 (10) 2010) xmtick(1980 (2) 2014) ///
                       xtitle("") format(%6.1f) extremes ///
                       title("Subjective social class in Western Germany", span) ///
                       name(subjclass, replace)