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.
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!
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.