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/