Help using Base SAS procedures

Sort based on number in a string of characters

Accepted Solution Solved
Reply
Contributor
Posts: 53
Accepted Solution

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
Respected Advisor
Posts: 3,124

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;

View solution in original post


All Replies
Solution
‎12-02-2015 03:24 PM
Respected Advisor
Posts: 3,124

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 magicSmiley Happy
Valued Guide
Posts: 858

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.

Need further help from the community? Please ask a new question.

Discussion stats
  • 3 replies
  • 933 views
  • 7 likes
  • 3 in conversation