BookmarkSubscribeRSS Feed
SASEnthusiast
Obsidian | Level 7

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
Astounding
PROC Star

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.

rkolupoti9001
Calcite | Level 5

data new_age;

set test;

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

run;

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

Very funny @Ksharp!

PG
Ksharp
Super User

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;

sas-innovate-white.png

Special offer for SAS Communities members

Save $250 on SAS Innovate and get a free advance copy of the new SAS For Dummies book! Use the code "SASforDummies" to register. Don't miss out, May 6-9, in Orlando, Florida.

 

View the full agenda.

Register now!

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 5 replies
  • 1355 views
  • 2 likes
  • 5 in conversation