DATA Step, Macro, Functions and more

How to ignore non numeric portion of a character variable and convert it to numeric?

Accepted Solution Solved
Reply
Occasional Contributor
Posts: 19
Accepted Solution

How to ignore non numeric portion of a character variable and convert it to numeric?

I have a variable which has values like >=500, >75 in addition to truly numeric values in integers.

I need to convert it to a numeric variable while ignoring the =, <= etc.

The SAS input function does not work in this case.

Thank you.

Here is a sample set

data what;

input  $lab;

datalines;

<=500

<75

=<100

2000

300

400

10

;

run;


Accepted Solutions
Solution
‎10-03-2013 06:34 PM
Occasional Contributor
Posts: 15

Re: How to ignore non numeric portion of a character variable and convert it to numeric?

Hi, you can use a compress function here in ways it fits best and if the variable is non numeric use the input function to convert it to numeric.

Example: kk = compress(lab,"<= ");  /*Here it will compress <= and blanks in the variable*/

           OR

                kk = compress(lab,"1234567890","k")   /* This will keep only 1234567890 values in the variable and it you have a decimal you can include . in the list*/

Use of input function: jj = input(kk,best12.);     /***Assigning informat to the variable******/

                                      format jj best12.;    /*****Output/Display format***************/

Hope that helps!

Regards,

Somi

View solution in original post


All Replies
Solution
‎10-03-2013 06:34 PM
Occasional Contributor
Posts: 15

Re: How to ignore non numeric portion of a character variable and convert it to numeric?

Hi, you can use a compress function here in ways it fits best and if the variable is non numeric use the input function to convert it to numeric.

Example: kk = compress(lab,"<= ");  /*Here it will compress <= and blanks in the variable*/

           OR

                kk = compress(lab,"1234567890","k")   /* This will keep only 1234567890 values in the variable and it you have a decimal you can include . in the list*/

Use of input function: jj = input(kk,best12.);     /***Assigning informat to the variable******/

                                      format jj best12.;    /*****Output/Display format***************/

Hope that helps!

Regards,

Somi

Occasional Contributor
Posts: 19

Re: How to ignore non numeric portion of a character variable and convert it to numeric?

I tried substr function. It is a longer way of doing this job.

if substr(result, 1, 2) in("<=","=<",">=")then results=substr(result,3,10);

else if substr(result,1,1)="<" then results=substr(result, 2,10);

else results=result;

results1=input(results,best12.);

Your code totally works though.

Thanks!

Occasional Contributor
Posts: 15

Re: How to ignore non numeric portion of a character variable and convert it to numeric?

K is a modifier and is used for keep. Also, in your method you could do it when obs are less as you can look and check where is the position of <>=, and impossible when their are thousands of obs.

Use this link:

SAS(R) 9.2 Language Reference: Dictionary, Fourth Edition

Rate me please if I answered you query.

Regards,

Somi

☑ This topic is SOLVED.

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

Discussion stats
  • 3 replies
  • 585 views
  • 5 likes
  • 2 in conversation