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.
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.