Jacob,
it's a lot easier than you think. I believe you are confused about
the
missing() function.
di missing(bad)
instructs Stata to display whatever missing(bad) returns, which will
be zero if missing(bad) evaluates to fale, and one if it evaluates
to
true. Because bad is a variable, missing(bad) is actually
interpreted
by Stata as missing(bad[1]), i.e. the value of the first observation
is substituted for the variable.
What you want is simply
count if missing(bad)
Hope this helps,
Eva
2009/3/28 Jacob Wegelin <[email protected]>:
The following program checks whether a variable contains any
missing
values. This seems an awkward way to do it. Does a more elegant
approach exist? I haven't found an extended macro function that
takes
care of this, and the function -missing()- does not do the trick.
clear all
capture program drop checkIfAnyMissing
program define checkIfAnyMissing, rclass
return local variable="`1'"
qui tabulate `1'
local howManyObs=`r(N)'
qui tabulate `1', missing
local howManyRowInclMissing=`r(N)'
if (`howManyObs'== `howManyRowInclMissing') {
return local answer="`1' has no missing values"
return scalar missing=0
}
else {
return local answer="`1' has at least one missing value"
return scalar missing=1
}
end
input bad good str8 strbad str8 strgood
0 0 0 0
. 1 "" 1
end
list
di missing(bad)
di missing(good)
checkIfAnyMissing bad
return list
checkIfAnyMissing good
return list
checkIfAnyMissing strbad
return list
checkIfAnyMissing strgood
return list
Thanks for any tips
Jacob Wegelin
Assistant Professor
Department of Biostatistics
Virginia Commonwealth University
730 East Broad Street Room 3006
P. O. Box 980032
Richmond VA 23298-0032
*
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/