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;
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
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
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!
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
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.