Obsidian | Level 7

## 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;

7 REPLIES 7
Barite | Level 11

## 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;

## 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;
Barite | Level 11

## 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

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

Yes you don't know.

Opal | Level 21

## 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;

Fluorite | Level 6

## 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

Opal | Level 21

## 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
Discussion stats
• 7 replies
• 1266 views
• 3 likes
• 6 in conversation