## attributing a rank to each modality starting with same word

Solved
Occasional Contributor
Posts: 12

# attributing a rank to each modality starting with same word

Hello everyone,

I have a table sorted by alphabetical order who looks like this :

 felony drugs consumer drugs seller drugs trafficker murder in the first degree murder in the second degree sex offender sex worker

And what I'd like is to create a variable attributing a rank for each felony starting with the same word. Something like this :

 felony rank drugs consumer 1 drugs seller 2 drugs trafficker 3 murder in the first degree 1 murder in the second degree 2 sex offender 1 sex worker 2

Any help on this ?

My final goal is to study if people tend to chose the first propositions when they have to pick an answer in a list in case of autocomplete text filled questions.

Accepted Solutions
Solution
2 weeks ago
Super User
Posts: 9,874

## Re: attributing a rank to each modality starting with same word

[ Edited ]

Try this:

``````data have;
input felony \$50.;
cards;
drugs consumer
drugs seller
drugs trafficker
murder in the first degree
murder in the second degree
sex offender
sex worker
;
run;

data have1;
set have;
first_word = scan(felony,1);
run;

data want;
set have1;
by first_word; /* add nostsorted if necessary */
if first.first_word
then rank = 1;
else rank + 1;
run;
``````
---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
How to convert datasets to data steps
How to post code

All Replies
Solution
2 weeks ago
Super User
Posts: 9,874

## Re: attributing a rank to each modality starting with same word

[ Edited ]

Try this:

``````data have;
input felony \$50.;
cards;
drugs consumer
drugs seller
drugs trafficker
murder in the first degree
murder in the second degree
sex offender
sex worker
;
run;

data have1;
set have;
first_word = scan(felony,1);
run;

data want;
set have1;
by first_word; /* add nostsorted if necessary */
if first.first_word
then rank = 1;
else rank + 1;
run;
``````
---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
How to convert datasets to data steps
How to post code
☑ This topic is solved.

Discussion stats