BookmarkSubscribeRSS Feed
meetagupta
Fluorite | Level 6

Hello, below is the dataset and I want to display only those obs. where last 3 digits in the amount  ends with 999.

thanks.

 

id   amount

1    678

2    73999

3     6574

4    7699

5    672908

6    69999

 

7 REPLIES 7
Reeza
Super User
Try the SUBSTRN() function - note the N.
hashman
Ammonite | Level 13

@meetagupta:

The MOD function is your friend:

data have ;                      
  input id amount ;              
  cards ;                        
1     678                        
2   73999                        
3    6574                        
4    7699                        
5  672908                        
6   69999                        
;                                
run ;                            
                                 
data want ;                      
  set have ;                     
  last_digit = mod (amount, 10) ;
run ;                            

Kind regards

Paul D. 

Tom
Super User Tom
Super User

Is account a number (and if so why?) or a character string?  The subject line says number and the example data appears left justified like a character string.  Depending on which you have use one of these methods.

where mod(account,1000) = 999 ;
where substrn(account,length(account)-2)='999';

 

hashman
Ammonite | Level 13

@Tom:

It seems it says "amount" rather than "account". And it's my understanding that by "last digit", the OP means the least significant, i.e. rightmost digit.

 

If the variable in question a digit string, methinks the simplest is:

  last_digit = char (amountC, length (amountC)) ;

Plus, it's convenient that CHAR returns $1 suitable for a single digit character.

 

Kind regards

Paul D. 

Tom
Super User Tom
Super User

Not sure how the last digit can ever equal 999.

hashman
Ammonite | Level 13

@Tom: Me neither. A case where the title mismatches the content. 

ballardw
Super User

Not the first subject content disagreement, even today:

 

I would go with the

Hello, below is the dataset and I want to display only those obs. where last 3 digits in the amount  ends with 999.

thanks.

 

But would also be concerned about potential decimal portion of the value.

 

 

hackathon24-white-horiz.png

The 2025 SAS Hackathon Kicks Off on June 11!

Watch the live Hackathon Kickoff to get all the essential information about the SAS Hackathon—including how to join, how to participate, and expert tips for success.

YouTube LinkedIn

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 7 replies
  • 10379 views
  • 3 likes
  • 5 in conversation