BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Ronein
Meteorite | Level 14

Hello

I am using select when in data set (I know that I can do it easily with IF but I wan to learn it ).

There is an error with "when(between 11 and 100) Ind='10-100';"

What is the correct way to write it please?

The error is

                         __

                         22

ERROR 22-322: Syntax error, expecting one of the following: !, !!, &, (, *, **, +, ',', -, /, <, <=, <>, =, >, ><, >=, AND, EQ, GE,

              GT, LE, LT, MAX, MIN, NE, NG, NL, OR, [, ^=, {, |, ||, ~=. 

 

data tbl2;
set tbl1;
length Ind $10;
select(X);
     when(0)Ind='0';
     when(1,2,3) Ind='1-3';
     when(4,5,6)Ind='4-6';
     when(7,8,9,10)Ind='7-10';
     when(between 11 and 100) Ind='10-100';
     otherwise Ind='100+';
end;
run;
1 ACCEPTED SOLUTION

Accepted Solutions
KachiM
Rhodochrosite | Level 12

@Ronein 

 

"Between " is seems to be not available. Instead use:

 

when(x > 10 and x <= 100) Ind='10-100';

View solution in original post

2 REPLIES 2
KachiM
Rhodochrosite | Level 12

@Ronein 

 

"Between " is seems to be not available. Instead use:

 

when(x > 10 and x <= 100) Ind='10-100';

ballardw
Super User

For single variable ranges I find formats easier in most cases:

 

proc format library=work;
   value X_ind;
   0 = '0'
   1,2,3 = '1-3'
   4,5,6 = '4-6'
   7,8,9,10='7-10'
   10<-100 ='10-100'
   100<-high= '100+'
   ;
run;

Proc print data=tbl1;
   var x;
   format x x_ind. ;
run;

The select becomes much more useful when you have multiple things to do for each group of values or when another , or more, variables are needed to complete the recode.

 

Generally you would only use BETWEEN in Proc SQL not a data step.

 

You can use syntax like

 

 

when (10 < x <=100)

which has the minor advantage of better readability than placing AND between the upper and lower range.

sas-innovate-2024.png

Available on demand!

Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.

 

Register now!

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
  • 2 replies
  • 338 views
  • 1 like
  • 3 in conversation