SAS Missing Values
How work with SAS system missing values
- Testing for missing values
- Displaying and formatting missing values
- Assigning missing values
- Replacing missing values
- Special missing
SAS stores 'missing' data depending on the variables data type: character or numeric. A 'missing' character value is represented as a blank (' ') or null (''). A 'missing' numeric value is represented as a single dot (.). Using SAS missing values rather than traditional '9' codes is a good idea. Not only does it avoid ambiguity (is YEAR=99 missing or equal to 1999?), but SAS will automatically exclude missing values from statistical calculations (although you can override this when appropiate).
Let's take a look at a dataset containing missing values. The response to the numeric variable Q2 is missing for ID=1. The value for the character variable GENDER is missing for ID=3.ID Q1 Q2 GENDERSAS allows you to differentiate between values that are missing for different reasons. For example, in survey research a question may not be answered because the respondent refuses to answer or because they don't know the answer. SAS has a range of missing values to cover this case. These special missing values are for numerics only and are the letters of the alphabet preceded by the single dot .A thru .Z . In a PROC PRINT these values will appear as a single capital letter. In the following example, the response for the numeric variable Q3 is missing for all cases.
--------------------------------------
1 4 . M
2 2 2 F
3 2 1
4 1 2 F
ID Q3Missing values are normally not included in any calculation in a PROC.
------------------
1 A
2 D
3 .
4 D
proc freq data = sasuser.miss;To include missing values in the calculations and/or be able to differentiate between any special missings in the dataset, use the /MISSING option on the TABLES statement in a PROC FREQ.
tables gender q1-q3;
run;
Cumulative Cumulative
Q1 Frequency Percent Frequency Percent
------------------------------------------------
1 1 25.0 1 25.0
2 2 50.0 3 75.0
4 1 25.0 4 100.0
Cumulative Cumulative
Q2 Frequency Percent Frequency Percent
------------------------------------------------
1 1 33.3 1 33.3
2 2 66.7 3 100.0
Frequency Missing = 1
Cumulative Cumulative
Q3 Frequency Percent Frequency Percent
------------------------------------------------
3 1 100.0 1 100.0
Frequency Missing = 3
proc freq data = sasuser.miss;
tables gender q1-q3 /missing;
run;
Cumulative Cumulative
Q1 Frequency Percent Frequency Percent
------------------------------------------------
1 1 25.0 1 25.0
2 2 50.0 3 75.0
4 1 25.0 4 100.0
Cumulative Cumulative
Q2 Frequency Percent Frequency Percent
------------------------------------------------
. 1 25.0 1 25.0
1 1 25.0 2 50.0
2 2 50.0 4 100.0
Q3 Frequency Percent Frequency Percent
------------------------------------------------
. 1 25.0 1 25.0
A 1 25.0 2 50.0
D 1 25.0 3 75.0
3 1 25.0 4 100.0

