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
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.
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';
@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.
Not sure how the last digit can ever equal 999.
@Tom: Me neither. A case where the title mismatches the content.
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.
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
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.
Ready to level-up your skills? Choose your own adventure.