I need to convert some of the following values into numberic when it looks like a numberic, based on its appearances.
How can I develop this logic?
data tmp;
length value $ 4;
input value;
cards;
1234
sys
;;
run;
Hi ZRick. I wonder if this helps.
data tmp;
length value $ 4;
input value;
cards;
1234
sys
;;
run;
data flag; set tmp; flag=ifc(anyalpha(value),'string','numeric'); run;
proc print noobs;; run;
K C Wong wrote:
Hi ZRick. I wonder if this helps.
data tmp;
length value $ 4;
input value;
cards;
1234
sys
;;
run;
data flag; set tmp; flag=ifc(anyalpha(value),'string','numeric'); run;
proc print noobs;; run;
You got close but what about E and D for example "1e6"
Unless ZRick's data has such cases ie 1e6 which I dunno about
Yes you don't know.
You could use something like:
data tmp;
length string $ 4;
input string;
number=input(string,?? best.);
cards;
1234
sys
;;
run;
This will convert the string to a numeric value if possible - else number will contain a missing;
Hi..
If you want to create new flags as string and numeric.
data tmp;
length value $ 4;
input value;
cards;
1234
sys
;;
run;
data flag;
set tmp;
string1 = anyalpha(value);
if string1 = 1 then string = value;else number=value; * then string = value;*else value = numeric;
drop string1;
/*put value= flag=;*/
run;
proc print noobs;; run;
Thanks,
Yash
Building on DN and Patrick's input :
data tmp;
length value flag $8;
input value $&;
a = input(value,?? comma8.);
format a best8.;
flag=ifc(missing(a), 'string', 'numeric');
datalines;
1234
-1234
+1234
1.3
1e-3
3d2
4,000
-4,000.9
sys
;
proc print data=tmp noobs; run;
PG
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.