DATA Step, Macro, Functions and more

Replacing numeric missing variable value with 'NA'

Reply
Contributor
Posts: 58

Replacing numeric missing variable value with 'NA'

data yourdata;
   set yourdata;
   array change _numeric_;
        do over change;
            if change=. then change= NA;
        end;
 run ;

The above sas code does not work as i am trying to replace missing Numeric variable  value with NA

PROC Star
Posts: 1,836

Re: Replacing numeric missing variable value with 'NA'

I think you would be better off using a user defined format to replace .=NA

 

Contributor
Posts: 58

Re: Replacing numeric missing variable value with 'NA'

Posted in reply to novinosrin
Even after using user defined format .....The format of all numeric
variable changes....hence the data does not show correct value
Super User
Posts: 23,776

Re: Replacing numeric missing variable value with 'NA'

No, That's not how a user defined format works. Post your code if you're having issues. 

 


subrat1 wrote:
Even after using user defined format .....The format of all numeric
variable changes....hence the data does not show correct value


 

 

Super User
Posts: 23,776

Re: Replacing numeric missing variable value with 'NA'

Well, a column is numeric or character and NA is a character. So you're trying to put a character in a field that expects a number. 

 

Do you need NA to export it to R? 

How are you exporting, perhaps modify it there?

 

What you're trying to do overall will define how this should be approached.

 

Valued Guide
Posts: 597

Re: Replacing numeric missing variable value with 'NA'

Hi,

 

User defined format solves your problem. See below code

PROC FORMAT ;
PICTURE Num    .="NA"
             OTHER="00.00";
			 run;

data test;
input  Number ;
format Number num. ;
cards;
3.3
6.8
10
.
run;
Thanks,
Suryakiran
Esteemed Advisor
Posts: 5,541

Re: Replacing numeric missing variable value with 'NA'

Defining your own numeric format is the simplest way to replace the printed values:

 

data test;
do x = 1, ., .a, ._, 2;
    output;
    end;
run;

proc format;
value myMiss
. = "          NA"
other = [best12.];
run;

proc datasets library=work nolist;
modify test;
format _numeric_ myMiss.;
run;

proc print data=test; run;

Note that special missing values are not affected by the custom format as defined above.

 

PG
Ask a Question
Discussion stats
  • 6 replies
  • 1145 views
  • 0 likes
  • 5 in conversation