File restructure #2
This commit is contained in:
133
Modules/ado/personal/c/checkvars.ado
Normal file
133
Modules/ado/personal/c/checkvars.ado
Normal file
@ -0,0 +1,133 @@
|
||||
*!Version 1.1
|
||||
*!Data management utility: check for existence of variables in a dataset.
|
||||
*!Authors: Amadou Bassirou DIALLO (World Bank) and Jean-Benoit Hardouin (Regional Health Observatory of Orl<72>ans)
|
||||
|
||||
program checkvars, rclass
|
||||
version 8
|
||||
syntax anything [if] [in] [, noList Tolerance(real 0) TAble noSUm GENMiss(namelist min=1 max=1)]
|
||||
|
||||
marksample touse
|
||||
tempname rat
|
||||
local av
|
||||
local unav
|
||||
local manymissings
|
||||
|
||||
quietly count if `touse'
|
||||
local tot = r(N)
|
||||
|
||||
qui isvar `anything'
|
||||
local badlist `r(badlist)'
|
||||
local varlist `r(varlist)'
|
||||
|
||||
if "`table'"!="" {
|
||||
if "`badlist'"!="" {
|
||||
di _col(4)in green "Unavailable variables: " in ye "`badlist'"
|
||||
di
|
||||
}
|
||||
di _col(4) in green "{hline 29}"
|
||||
display _col(4) in gr "Existing" _col(15) in gr "Rate of"
|
||||
display _col(4) in gr "Variable" _col(14) "missings" _col(24) "Available"
|
||||
di _col(4) in green "{hline 29}"
|
||||
}
|
||||
|
||||
tokenize `varlist'
|
||||
local nbvar:word count `varlist'
|
||||
|
||||
forvalues i=1/`nbvar' {
|
||||
capture assert missing(``i'') if `touse'
|
||||
if !_rc {
|
||||
if "`table'"=="" {
|
||||
display in ye "``i''" in gr " is empty in the database." in ye " ``i''" in gr ///
|
||||
" is not added to the available list"
|
||||
}
|
||||
else {
|
||||
display _col(4) in gr "``i''" _col(14) "100.00%"
|
||||
}
|
||||
}
|
||||
else {
|
||||
if "`table'"=="" {
|
||||
display in ye "``i''" in gr " exists and is not empty."
|
||||
}
|
||||
*if "`available'"~= "" {
|
||||
quietly count if ``i'' >= . & `touse'
|
||||
local num = r(N)
|
||||
scalar `rat' = (`num'/`tot')*100
|
||||
if "`table'"=="" {
|
||||
display in ye "``i''" in gr " has " in ye r(N) in gr " missings."
|
||||
display in gr "Ratio number of missings of" in ye " ``i''" in gr ///
|
||||
" to total number of observations: " in ye %6.2f `rat' "%"
|
||||
}
|
||||
if `rat' <= `tolerance' {
|
||||
local av `av' ``i''
|
||||
if "`table'"=="" {
|
||||
display in ye "``i''" in gr " is added to the available list."
|
||||
}
|
||||
else {
|
||||
display _col(4) in gr "``i''" in ye _col(15) %6.2f `rat' "%" _col(32) "X"
|
||||
}
|
||||
}
|
||||
else {
|
||||
local manymissings `manymissings' ``i''
|
||||
if "`table'"=="" {
|
||||
display in ye "``i''" in gr " has too many missings, compared to the tolerance level."
|
||||
display in ye "``i''" in gr " is not added to the available list."
|
||||
}
|
||||
else {
|
||||
display _col(4) in gr "``i''" _col(15) in ye %6.2f `rat' "%"
|
||||
}
|
||||
}
|
||||
*}
|
||||
}
|
||||
if "`table'"=="" {
|
||||
di
|
||||
}
|
||||
}
|
||||
if "`table'"!="" {
|
||||
di _col(4) in green "{hline 29}"
|
||||
}
|
||||
|
||||
return local available `av'
|
||||
return local unavailable `badlist'
|
||||
return local manymissings `manymissings'
|
||||
|
||||
if "`av'" ~= ""&"`sum'"=="" {
|
||||
display _newline
|
||||
display in ye _col(14) "Unweighted summary statistics for available variables:" _n
|
||||
summarize `av' if `touse'
|
||||
}
|
||||
|
||||
|
||||
if "`list'"== "" {
|
||||
display _newline
|
||||
display in ye _d(97) "_"
|
||||
display _newline
|
||||
if "`badlist'"~="" {
|
||||
display in gr "Unavailable variables: " in ye _col(45) "`badlist'" _n
|
||||
}
|
||||
if "`av'"~="" {
|
||||
display in gr "Available variables: " in ye _col(45) "`av'" _n
|
||||
}
|
||||
if "`manymissings'"~="" {
|
||||
display in gr "Available variables but with too missings: " in ye _col(45) "`manymissings'" _n
|
||||
}
|
||||
display in ye _d(97) "_"
|
||||
}
|
||||
|
||||
if "`genmiss'" !="" {
|
||||
capture confirm variable `genmiss'
|
||||
if _rc!=0 {
|
||||
qui gen `genmiss'=0
|
||||
local nbav:word count `av'
|
||||
tokenize `av'
|
||||
forvalues i=1/`nbav' {
|
||||
qui replace `genmiss'=`genmiss'+1 if ``i''>=.
|
||||
}
|
||||
}
|
||||
else {
|
||||
di in green "The variable" in ye " `genmiss' " in green "already exists".
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
end
|
Reference in New Issue
Block a user