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.

 

 

sas-innovate-wordmark-2025-midnight.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


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.

SAS Training: Just a Click Away

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

Browse our catalog!

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