BookmarkSubscribeRSS Feed
eemrun
Obsidian | Level 7

I am trying to create  an expense report where I am categorizing transactions based on certain keywords (e.g. if a transaction line contains STARBUCKS, categorize it as EATING-OUT). I am using the following but notice that the command does not always work (as in does not assign transactions to categories all the time. Is there a better way to do this other than the following?

 

	if prxmatch ("m/BAKE & BEANS|Smart Sushi |Columbus Coffee|Coffee Club|Mozaic|Menulog|Kyoto|Baxters|
		NZ Natural|Rio|yoway|yoghurt||Dogmatic|Donut|Thanya|Nol|Bean/i",details) > 0 then
		Category = "Eat-Out";
2 REPLIES 2
ChrisNZ
Tourmaline | Level 20

There is no reason this should fail if done properly.

Do you have an example of data that is missed?

Note that you have a double pipe ||  in the example you gave.

 

Or...  Could it be that you look for spaces when you shouldn't? Try:

 

if prxmatch ("m/BAKE & BEANS|Smart Sushi |Columbus Coffee|Coffee Club|Mozaic|Menulog|Kyoto|Baxters|"
           ||"NZ Natural|Rio|yoway|yoghurt|Dogmatic|Donut|Thanya|Nol|Bean/i",details
) > 0 then category = "Eat-Out";

 

eemrun
Obsidian | Level 7

Thanks. You are correct. I had some small syntax errors and some classification errors. All works now.

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

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
  • 2 replies
  • 1245 views
  • 0 likes
  • 2 in conversation