/************************************************** FILENAME: MISSPECL.SAS SUBJECT HEADING: DATA MANAGEMENT INITIALS: KBW DATE: 8/13/96 PROGRAM: SAS VERSION: 6.11 TS040 PLATFORM: WINDOWS 3.11 TITLE: USING DIFFERENT MISSING VALUE CODES IN SAS DESCRIPTION: THIS PROGRAM TAKES THE VALUES 88 AND 99 AND SETS THEM UP AS DIFFERENT MISSING VALUES IN SAS. ***************************************************/ /*FIRST WE CREATE THE ORIGINAL DATA SET WITH THREE VARIABLES. THERE ARE 2 MISSING VALUE CODES: 88 AND 99.*/ data test; input quest1 quest2 quest3; datalines; 1 3 4 2 5 88 99 4 2 88 3 2 2 99 1 1 88 1 88 99 3 4 4 1 3 2 99 2 2 1 4 3 3 ; /*DO FREQUENCIES TO CHECK THE ORIGINAL DATA SET. SAS DOES NOT CONSIDER 88 AND 99 TO BE MISSING VALUES YET*/ proc freq data=test; tables quest1-quest3; title 'ORIGINAL DATA SET'; run; /*NOW WE CREATE A NEW DATA SET IN WHICH WE REPLACE 88 WITH .A, A SPECIAL SAS MISSING VALUE CODE, AND 99 WITH .B (SEE SAS LANGUAGE REF. VERSION 6, 1ST ED, PP 36-37).*/ /*AN ARRAY STATEMENT IS USED TO SET UP THE MISSING VALUES. (SEE SAS LANGUAGE REF. VERSION 6, 1ST ED, PP. 292-296). */ data test2; set test; array quest(3) quest1-quest3; do i=1 to 3; if quest(i)=88 then quest(i)=.A; if quest(i)=99 then quest(i)=.B; end; drop i; run; /*A FORMAT STATEMENT IS USED TO SET UP THE LABELS FOR THE MISSING VALUES*/ proc format; value missfmt .A='NOT APPLICABLE' .B='NOT ANSWERED'; /*WE NOW DO PROC FREQ AGAIN, WITH THE MISSING OPTION TO SHOW THE MISSING VALUES*/ proc freq data=test2; tables quest1-quest3/missing; format quest1-quest3 missfmt.; title 'MISSING VALUES ARE REPLACED'; run; /*WE NOW DO PROC FREQ WITHOUT THE MISSING OPTION, SO THE PERCENTAGES DON'T INCLUDE THE MISSING VALUES*/ proc freq data=test2; tables quest1-quest3; title 'MISSING VALUES ARE NOT INCLUDED'; run;