I have a dataset like below
No Process
1 AB C
2 AB D
3 XYZ
4 YYY
5 AB C
6 XYZ
7 DE F
8 AB D
9 AB D
10 YYY
I want to find the values that does not contain AB* as follows using arrays.
No Process
3 XYZ
4 YYY
6 XYZ
7 DE F
10 YYY
Please advise.
Where do arrays come into the process?
It should be a single filter, either a WHERE or IF statement.
if indexw( process, 'AB') > 0 then keep;
or
WHERE process like '%AB%';
data have; input No Process $; cards; 1 AB C 2 AB D 3 XYZ 4 YYY 5 AB C 6 XYZ 7 DE F 8 AB D 9 AB D 10 YYY ; run; data want; set have; if upcase(process) =: 'AB' then delete; run;
alternatively with perl regular expression
if prxmatch('m/(AB)/',process) then delete;
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.