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";
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";
Thanks. You are correct. I had some small syntax errors and some classification errors. All works now.
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!
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.