SAS provides several functions to test for
missing values but in this post we will focus on MISSING(), CMISS() and NMISS()
functions. The NMISS() function is reserved for numeric variables. The
MISSING() and CMISS() functions can be used with either character or numeric
variables. The CMISS() and
NMISS() functions are designed by SAS to count the number of arguments with
missing values whereas the MISSING function checks whether or not a variable is
missing. The MISSING(), CMISS(), and NMISS()
functions provide a simple approach to check for missing values and these
functions let you write few lines of code by avoiding large if-statements when
you need to check for missing values in several values at the same time.
MISSING() function is very useful when you need
to check any variable has a missing value or not, but not sure if it’s a
character or numeric? MISSING function works for either character or numeric
variables and it also checks for the special numeric missing values (.A, .B,.C
._ etc)as well. The MISSING() function produces a numeric result (0 or 1) if
the data point is present or missing. MISSING(varname) is the same as
MISSING(varname)=1. MISSING(varname)=0
specifies when the data point is present.
The MISSING function is
particularly useful if you use special missing values since 'if varname=.' will not identify all
missing values in such cases.
NOTE: Missing value is not consistent
in SAS as it changes between numeric and character variables. A single period
(.) represents the Numeric missing value. A single blank enclosed in single or
double quotes (' ' or “ ” )
represents the Character missing value. A single period followed by a single
letter or an underscore (ex: .A, .B, .Z, ._) represents Special numeric missing
values. Please note that these special missing values available for numeric
variables only.
The
NMISS() function will count the number of arguments with missing values in the
specified list of numeric variables. NMISS() function is very useful if you
want to make sure if at least one variable in the list is not missing.
The
CMISS() is available with SAS 9.2 and SAS Enterprise Guide 4.3 and is similar
to the NMISS() function. The only difference is that it counts the number
arguments that are missing for both character and numeric variables.
The NMISS() function returns the number
of argument variables which have missing values. NMISS works with multiple
numeric values, whereas MISSING works with only one value that can be either
numeric or character.
Examples:
* count the number of the
variables A, B, and C which have missing values;
count=nmiss(A, B, C);
count=nmiss(of A B C);
* count the number of the
variables from Var1 to Var10 which have missing values;
count=nmiss(of var1-var10);
Examples:
x1=nmiss(1,0,.,2,5,.);
|
|
For more details refer to this page. (USING the CMISS, NMISS and MISSING FUNCTIONS)
For more details regarding the special missing values, please also refer to Special Missing Values in SAS (http://studysas.blogspot.com/2010/04/special-missing-values.html).
References:
1) Missing values in SAS (http://www.pauldickman.com/teaching/sas/missing.php);
2) MISSING! - Understanding and Making the Most of Missing Data: SUGI 31: Suzanne M. Humphreys, PRA International, Victoria, BC (Canada).
3) Special Missing Values in SAS (http://studysas.blogspot.com/2010/04/special-missing-values.html)
4) Usage Note 36480 KNOWLEDGE BASE / SAMPLES & SAS NOTES from support.sas.com
5) SAS(R) 9.2 Language Reference: Dictionary, Fourth Edition.
6) Carpenter's Guide to Innovative SAS Techniques, Art Carpenter (Page:99)