DATA Step, Macro, Functions and more

need the logic to tell if this value looks like numeric

Reply
Frequent Contributor
Posts: 133

need the logic to tell if this value looks like numeric

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;

Regular Contributor
Posts: 216

Re: need the logic to tell if this value looks like numeric

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;

Respected Advisor
Posts: 3,777

Re: need the logic to tell if this value looks like numeric

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"

data tmp;
   input value $;
   a = input(value,comma8.);
   length flag $8;
   flag=ifc(anyalpha(value),
'string?','numeric?');
  
cards;
1234
-1234
+1234
1.3
1e-3
3d2
4,000
-4,000.9
sys
;;;;
   run;
proc print;
  
run;
Regular Contributor
Posts: 216

Re: need the logic to tell if this value looks like numeric

Unless ZRick's data has such cases ie 1e6  which I dunno about  Smiley Happy

Respected Advisor
Posts: 3,777

Re: need the logic to tell if this value looks like numeric

Yes you don't know.

Respected Advisor
Posts: 3,889

Re: need the logic to tell if this value looks like numeric

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;

Contributor
Posts: 70

Re: need the logic to tell if this value looks like numeric

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

Respected Advisor
Posts: 4,646

Re: need the logic to tell if this value looks like numeric

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

PG
Ask a Question
Discussion stats
  • 7 replies
  • 326 views
  • 3 likes
  • 6 in conversation