*! version 3.0.0 *! lag -- construct lags of existing variable *! Sean Becketti, April 1991. program define lag version 3.0 capture confirm integer number `1' if _rc==0 { local nlags `1' mac shift } else local nlags 1 local varlist "req ex min(1) max(1)" local options "Suffix(str)" parse "`*'" if `nlags'==0 { exit } if "`suffix'"=="" { local suffix "`varlist'" } if (`nlags'<0) { local i "-1" local compare ">=" local incr -1 local L "F" } else { local i 1 local compare "<=" local incr 1 local L "L" } local addper = index("`suffix'",".")==0 local type : type `varlist' while (`i' `compare' `nlags') { local j = abs(`i') local prefix "`L'" if (`j'!=1) { local prefix "`prefix'`j'" } if (`addper') { local prefix "`prefix'." } local name = substr("`prefix'`suffix'",1,8) capture confirm var `name' if _rc==0 { di in bl "(note: `name' replaced)" drop `name' } quietly gen `type' `name' = `varlist'[_n-`i'] label var `name' "`prefix'`varlist'" local i = `i'+ `incr' } end