Solved
Contributor
Posts: 53

# Sort based on number in a string of characters

Hi,

I have a dataset which has the following values for cyclename variable.:

Cycle 1

Cycle 2

Cycle 3

Cycle 4

Cycle 5

Cycle 11

Cycle 12

When i SORT IT BY CYCLENAME, Cycle 11 and cycle 12 come  before cycle 2,

Cycle 1

Cycle 11

Cycle 12

Cycle 2

Cycle 3

Cycle 4

Cycle 5

How do I fix this so that cycle 11 and 11 come at last?

Thanks,

Archana

Accepted Solutions
Solution
‎12-02-2015 03:24 PM
Posts: 3,167

## Re: Sort based on number in a string of characters

You will need a special option in Proc Sort:

```data have;
input var \$10.;
cards;
Cycle 1
Cycle 11
Cycle 12
Cycle 2
Cycle 3
Cycle 4
Cycle 5
;

proc sort data=have out=want sortseq=linguistic(Numeric_Collation=ON);
by var;
run;```

All Replies
Solution
‎12-02-2015 03:24 PM
Posts: 3,167

## Re: Sort based on number in a string of characters

You will need a special option in Proc Sort:

```data have;
input var \$10.;
cards;
Cycle 1
Cycle 11
Cycle 12
Cycle 2
Cycle 3
Cycle 4
Cycle 5
;

proc sort data=have out=want sortseq=linguistic(Numeric_Collation=ON);
by var;
run;```
Contributor
Posts: 53

## Re: Sort based on number in a string of characters

Thanks, it works like magic
Valued Guide
Posts: 863

## Re: Sort based on number in a string of characters

Here is another solution, although I like the proc sort option, that is new to me:

proc sql;
create table want as
select *
from have
order by input(scan(var,2,' '),8.);

🔒 This topic is solved and locked.