BookmarkSubscribeRSS Feed
asasha
Obsidian | Level 7

Hello, I need to rank a numeric variable into 5 groups by another categorical variable and also get the cutoffs. I currently have this code:

 

proc rank data=dsout out=ranks groups=5;
   by var2;
   var var1;
   ranks var1_rank;
run;

I have 2 columns now (var1, var2), and I want the output to be 4 columns. The var1 ranks by var2 (var1_rank) derived using the above code and the cutoff values (range) that would take a value like '0.0999254969 <= x1 < 0.1993986319' based on how the ranks are calculated. Thanks.

 

1 REPLY 1
Reeza
Super User
I don't think there's a good way to do this all in one step except a manual data step...curious to see other answers.

Assuming you don't want that, I'd use PROC RANKS and then pass the results to PROC MEANS and find the MIN/MAX for each RANK and merge that back into my output from PROC RANK.

Example of adding average value to a data set - modify it to return min/max instead of average.
https://github.com/statgeek/SAS-Tutorials/blob/master/add_average_value_to_dataset.sas

Ready to join fellow brilliant minds for the SAS Hackathon?

Build your skills. Make connections. Enjoy creative freedom. Maybe change the world. Registration is now open through August 30th. Visit the SAS Hackathon homepage.

Register today!
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.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 1 reply
  • 1026 views
  • 1 like
  • 2 in conversation