1 phuse 2011 missing values in sas magnus mengelbier director

14
1 PhUSE 2011 Missing Values in SAS Magnus Mengelbier Director

Upload: gerard-palmer

Post on 31-Dec-2015

217 views

Category:

Documents


4 download

TRANSCRIPT

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