DATA Step, Macro, Functions and more

Convert character to numeric $1,000.32

Accepted Solution Solved
Reply
Super Contributor
Posts: 503
Accepted Solution

Convert character to numeric $1,000.32

[ Edited ]

Hello everyone,

 

I am dealing with a quite messy data and I want to convert them into numeric.

in the same variable, I have value of say: $90 , $90.25 , 90.28, 1,012 , $1,253.25

I mean, any combination among $ and comma (,)

 

My approach is to compress "$" and "," and then create new variable but clearly, it doesn't work.

 

Please, any help is very much appreciated.

 

HC

 

data have;
input var1 $ var2 $;
datalines;
$84.12 $1,000.20
$1,184.12 1,000.20
84 $55
;run;
data have; set have;
var1=input(compress(var1,'$'),best12.); *I am thinking about an IF var1 contain $ then do, but I dont know how to;
var1=input(compress(var1,','),best12.);

var2=input(compress(var2,'$'),best12.);
var2=input(compress(var2,','),best12.);
run;
data want; set have;
drop var1 var2;
var1_new=Input(var1 ,best12.);
var2_new=Input(var2 ,best12.);
run;

 

 


Accepted Solutions
Solution
‎09-19-2017 12:06 PM
Frequent Contributor
Posts: 113

Re: Convert character to numeric $1,000.32

[ Edited ]

Try this...

 

data WANT;
  set HAVE;
 var1_new=input(compress(var1,"$,"),8.);
 var2_new=input(compress(var2,"$,"),8.);
RUN;

Hope it helps.

View solution in original post


All Replies
Solution
‎09-19-2017 12:06 PM
Frequent Contributor
Posts: 113

Re: Convert character to numeric $1,000.32

[ Edited ]

Try this...

 

data WANT;
  set HAVE;
 var1_new=input(compress(var1,"$,"),8.);
 var2_new=input(compress(var2,"$,"),8.);
RUN;

Hope it helps.

PROC Star
Posts: 503

Re: Convert character to numeric $1,000.32

if you reading the data all you need to do is give informat commaw.d. You can try something like below

 

data have;
input var1:comma10.2 var2:comma10.2;
datalines;
$84.12 $1,000.20
$1,184.12 1,000.20
84 $55
;
PROC Star
Posts: 2,316

Re: Convert character to numeric $1,000.32

[ Edited ]

Like this?

data WANT;
  set HAVE;
  VARN1=input(VAR1,dollar12.); 
  VARN2=input(VAR2,dollar12.);
run;
☑ This topic is solved.

Need further help from the community? Please ask a new question.

Discussion stats
  • 3 replies
  • 166 views
  • 0 likes
  • 4 in conversation