Subscribe to DSC Newsletter

Please may I kindly seek your input in solving a problem in SAS. I want this done asap, hope someone can response on time.


Essentially, I want to group a variable in different ranges, with incremental value of 5000. So, the iteration, if done manually, will take about 20,000 entries and thus I am trying to adopt a clever way to automate this. I am sure either some do loops; array or iterative do- statement can do this.


Here is an example:


if 5000 <= totprice <= 10000 then vband=1;

else if 10000 < totprice <= 15000 then vband =2;

else if 15000 < totprice <= 20000 then vband =3;

else if totprice > 20000 then vband =4;


proc format ;

value band

1='     5000'

2='    10000'

3='    15000'

4='    20000';


In the end, I will proc tabulate my table and the output will come up as formatted above with other stuff.  


Any help will be appreciated.

Views: 238

Replies to This Discussion

Do you know how to write a macro?

Something along these lines:

%macro bin;

data a;
set a;
if missing(totprice) then vband= .;
else if totprice<= 0 then vband= 0;
%do i = 1 %to 20000;
else if totprice<= %eval(&i. * 5000) then vband= &i.;
else vband = 20001;



Hi Ajay,

Many thanks for your prompt response. I did tried to reply immediately but to no avail.


I have less expertise knowledge about macros but I quite understand the logic of your suggested code. However, it doesn't seem to work. When I copied & pasted it and do the obvious changes with data, some of the key functions aren't highlighted. Pls what am i doing wrong? Pls i will appreciate if you kindly provide more insight.


I look forward to hearing from you. Thanks a million!   


On Data Science Central

© 2021   TechTarget, Inc.   Powered by

Badges  |  Report an Issue  |  Privacy Policy  |  Terms of Service