Obsidian | Level 7

## SAS BASE- Range conversion

Hi,

I have a variable "Age" with Data as;

18-24

15-30

29-54

The variable is Character. How can I convert the range to numeric to calculate age range ie. 18-24 is 6 years.

5 REPLIES 5
PROC Star

## Re: SAS BASE- Range conversion

One way:

age_range = input(scan(age,2,'-'), 3.) - input(scan(age,1,'-'), 3.);

You might want to add 1 to the result, if you decide that 18-24 actually spans 7 years not 6.

Calcite | Level 5

## Re: SAS BASE- Range conversion

data new_age;

set test;

new_age =(INPUT(SCAN(Age, -1), 8.))-(INPUT(SCAN(Age, 1), 8.));

run;

Super User

## Re: SAS BASE- Range conversion

data have;
input age \$20.;
dif=-1*input(resolve(cats('%sysevalf(',age,')')),best.);
cards;
18-24
15-30
29-54
;
run;
Opal | Level 21

## Re: SAS BASE- Range conversion

Very funny @Ksharp!

PG
Super User

## Re: SAS BASE- Range conversion

Yeah. you can do it with any algorithmic expression.

data have;
input age \$20.;
dif=input(resolve(cats('%sysevalf(',age,')')),best.);
cards;
18-24
15*30
29/54
;
run;
Discussion stats
• 5 replies
• 888 views
• 2 likes
• 5 in conversation