DATA Step, Macro, Functions and more

Create groups no range

Accepted Solution Solved
Reply
Contributor
Posts: 71
Accepted Solution

Create groups no range

[ Edited ]

Hi,

I need some help with creating groups this is what i want:

 

IF value1 < 33 then score = 20 ;
IF value1 < 33.5 then score = 12 ;
IF value1 < 34 then score = 13 ;
IF value1 < 35 then score = 3 ;
IF value1 < 36 then score = 2 ;
Else score = 4 ;

 

its not giving me the values I need . The cutoff eg. for the first row should be 33 and second should be 33.5?

 

Any ideas.


Accepted Solutions
Solution
‎02-08-2017 01:50 PM
Super User
Posts: 11,343

Re: Create groups no range


AZIQ1 wrote:

Hi,

I need some help with creating groups this is what i want:

 

IF value1 < 33 then score = 20 ;
IF value1 < 33.5 then score = 12 ;
IF value1 < 34 then score = 13 ;
IF value1 < 35 then score = 3 ;
IF value1 < 36 then score = 2 ;
Else score = 4 ;

 

its not giving me the values I need . The cutoff eg. for the first row should be 33 and second should be 33.5?

 

Any ideas.


Multiple if statements as you have are all evaluated. So the LAST one in that is true gets teh assignment. That is what the ELSE does to the part after ELSE only when the immediately previous is not true.

You may also consider

IF 33 le value1 < 34 then score = 13

to set specific ranges.

View solution in original post


All Replies
PROC Star
Posts: 7,492

Re: Create groups no range

Add elses to all but the first if statement. i.e.,

 

IF value1 < 33 then score = 20 ;
else IF value1 < 33.5 then score = 12 ;
else IF value1 < 34 then score = 13 ;
else IF value1 < 35 then score = 3 ;
else IF value1 < 36 then score = 2 ;
Else score = 4 ;

HTH,

Art, CEO, AnalystFinder.com

 

Solution
‎02-08-2017 01:50 PM
Super User
Posts: 11,343

Re: Create groups no range


AZIQ1 wrote:

Hi,

I need some help with creating groups this is what i want:

 

IF value1 < 33 then score = 20 ;
IF value1 < 33.5 then score = 12 ;
IF value1 < 34 then score = 13 ;
IF value1 < 35 then score = 3 ;
IF value1 < 36 then score = 2 ;
Else score = 4 ;

 

its not giving me the values I need . The cutoff eg. for the first row should be 33 and second should be 33.5?

 

Any ideas.


Multiple if statements as you have are all evaluated. So the LAST one in that is true gets teh assignment. That is what the ELSE does to the part after ELSE only when the immediately previous is not true.

You may also consider

IF 33 le value1 < 34 then score = 13

to set specific ranges.

☑ This topic is solved.

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

Discussion stats
  • 2 replies
  • 162 views
  • 2 likes
  • 3 in conversation