1 PhUSE 2011 Missing Values in SAS Magnus Mengelbier Director.

14
1 PhUSE 2011 Missing Values in SAS Magnus Mengelbier Director

Transcript of 1 PhUSE 2011 Missing Values in SAS Magnus Mengelbier Director.

Page 1: 1 PhUSE 2011 Missing Values in SAS Magnus Mengelbier Director.

1PhUSE 2011

Missing Values in SAS

Magnus MengelbierDirector

Page 2: 1 PhUSE 2011 Missing Values in SAS Magnus Mengelbier Director.

2PhUSE 2011

Topics

Introduction Missing values Missing system option Assign missing values Tests for a missing value Summary

Page 3: 1 PhUSE 2011 Missing Values in SAS Magnus Mengelbier Director.

3PhUSE 2011

Question

if myvar = . then put "I am missing" ;

if myvar = "" then put "I am missing" ;

if myvar = " " then put "I am missing" ;

Page 4: 1 PhUSE 2011 Missing Values in SAS Magnus Mengelbier Director.

4PhUSE 2011

Missing Values

 data _null_ ; length char $ 10 ;  num = . ; char = put( num, 8.-L);  put num = / char = ; if missing(num) then put "num is missing"; if missing(char) then put "char is missing";run;

num=.char=.num is missing

num=.char=.num is missing

Page 5: 1 PhUSE 2011 Missing Values in SAS Magnus Mengelbier Director.

5PhUSE 2011

Default Value is a Missing Value

 data _null_;

num_3 = w;

put w = / num_1 = / num_2 = / num_3 = ;

run;

81 data _null_;8283 num_3 = w;8485 put w = / num_1 = / num_2 = / num_3 = ;8687 run;

NOTE: Variable w is uninitialized.NOTE: Variable num_1 is uninitialized.NOTE: Variable num_2 is uninitialized.w=.num_1=.num_2=.num_3=.NOTE: DATA statement used (Total process time): real time 0.00 seconds cpu time 0.00 seconds

81 data _null_;8283 num_3 = w;8485 put w = / num_1 = / num_2 = / num_3 = ;8687 run;

NOTE: Variable w is uninitialized.NOTE: Variable num_1 is uninitialized.NOTE: Variable num_2 is uninitialized.w=.num_1=.num_2=.num_3=.NOTE: DATA statement used (Total process time): real time 0.00 seconds cpu time 0.00 seconds

Page 6: 1 PhUSE 2011 Missing Values in SAS Magnus Mengelbier Director.

6PhUSE 2011

Missing Codes

data _null_ ;

num = .B ;

if ( num = . ) then put "num is missing"; if missing( num ) then put "missing() thinks num is missing";run;

65 data _null_ ;6667 num = .B ;6869 if ( num = . ) then put "num is missing";70 if missing( num ) then put "missing() thinks num is missing";71 run;

missing() thinks num is missingNOTE: DATA statement used (Total process time): real time 0.00 seconds cpu time 0.00 seconds

65 data _null_ ;6667 num = .B ;6869 if ( num = . ) then put "num is missing";70 if missing( num ) then put "missing() thinks num is missing";71 run;

missing() thinks num is missingNOTE: DATA statement used (Total process time): real time 0.00 seconds cpu time 0.00 seconds

Page 7: 1 PhUSE 2011 Missing Values in SAS Magnus Mengelbier Director.

7PhUSE 2011

Missing System Option

Single Character “Format” of missing values Only applicable to output

option missing = 'w';

Page 8: 1 PhUSE 2011 Missing Values in SAS Magnus Mengelbier Director.

8PhUSE 2011

Missing System Option – Example I

option missing = '';

data _null_ ; length char $ 10 ;

num = . ; char = put( num, 8.-L);

put num = / char = ; if missing(num) then put "num is missing"; if missing(char) then put "char is missing";run;

option missing = '.';

num=char=num is missingchar is missing

num=char=num is missingchar is missing

Page 9: 1 PhUSE 2011 Missing Values in SAS Magnus Mengelbier Director.

9PhUSE 2011

Missing System Option – Example II

data work.missing ; num_1 = .; num_2 = .B;run;

option missing = 'w';

data _null_; set work.missing ;

put num_1 = / num_2 = ;

num_3 = w;run;

option missing = '.'; * reset the missing to be a period again ;

9697 option missing = 'w';9899 data _null_;100 set work.missing ;101102 put num_1 = / num_2 = ;103104 num_3 = w;105 run;

NOTE: Variable w is uninitialized.num_1=wnum_2=BNOTE: There were 1 observations read from the data set WORK.MISSING.NOTE: DATA statement used (Total process time): real time 0.01 seconds cpu time 0.00 seconds

9697 option missing = 'w';9899 data _null_;100 set work.missing ;101102 put num_1 = / num_2 = ;103104 num_3 = w;105 run;

NOTE: Variable w is uninitialized.num_1=wnum_2=BNOTE: There were 1 observations read from the data set WORK.MISSING.NOTE: DATA statement used (Total process time): real time 0.01 seconds cpu time 0.00 seconds

Page 10: 1 PhUSE 2011 Missing Values in SAS Magnus Mengelbier Director.

10PhUSE 2011

Assign Missing Values

data _null_;

call missing( num_1, num_2, w ); num_3 = w;

put num_1 = / num_2 = / num_3 = ;

run;

122 data _null_;123124 call missing( num_1, num_2, w );125 num_3 = w;126127 put num_1 = / num_2 = / num_3 = ;128129 run;

num_1=.num_2=.num_3=.NOTE: DATA statement used (Total process time): real time 0.05 seconds cpu time 0.01 seconds

122 data _null_;123124 call missing( num_1, num_2, w );125 num_3 = w;126127 put num_1 = / num_2 = / num_3 = ;128129 run;

num_1=.num_2=.num_3=.NOTE: DATA statement used (Total process time): real time 0.05 seconds cpu time 0.01 seconds

Page 11: 1 PhUSE 2011 Missing Values in SAS Magnus Mengelbier Director.

11PhUSE 2011

Tests for Missing Values

Function Types Description

missing() NumericCharacter

Tests if a single variable is missing.

nmiss() Numeric Number of variables in the specified list with a missing value

n() Numeric Number of variables in the specified list with a non-missing value

cmiss() NumericCharacter

Number of variables in the specified list with a missing value

Introduced in SAS 9.2

if missing( cats(char_1 , char_2 )) then put "all of them are missing";

Page 12: 1 PhUSE 2011 Missing Values in SAS Magnus Mengelbier Director.

12PhUSE 2011

Summary

Missing values are valid values in SAS Conversion of missing values SAS System Option Assign missing values

“Period” notation Missing Codes CALL MISSING()

Testing for missing values MISSING() NMISS() N() CMISS()

Consistent inconsistency

Page 13: 1 PhUSE 2011 Missing Values in SAS Magnus Mengelbier Director.

13PhUSE 2011

Questions & Comments

Introduction Missing values Missing system option Assigning missing values Testing for a missing value Conclusion

Magnus MengelbierDirectorLimelogic Ltd

[email protected]+44 208 144 5701

Page 14: 1 PhUSE 2011 Missing Values in SAS Magnus Mengelbier Director.

14PhUSE 2011

T H E E N D