Here's an example scenario, data and sample codes (YTD2015): BRAND ITEM QT A apple 1 B orange 1 C melon 1 D apple 1 A apple 1 A apple 1 B orange 1 B orange 1 D melon 2 D apple 2 C orange 2 B melon 2 A apple 2 A orange 2 C melon 3 C apple 3 C orange 3 D melon 3 A apple 3 B melon 3 *Viewed 2015 Quarter 1 (Q1) item list to identify the group and item combination that has the threshold of 3 or more ; data sample1; set sample; if QT=1; run; proc sort data=sample1;by group item;run; data sample2; set sample1; by group item; if first.item then count=1; else count+1; run; data sample3; set sample2; if count ge 3; run; *created macro variables for hit combination; data _null_; set sample3 end=eof; call symputx('Groupname'||left(_n_), brand, 'G'); call symputx('Product'||left(_n_), item, 'G'); if eof then call symputx('numrows',_n_, 'G'); run; %macro popular; %do i=1 %to &numrows; %put Signal #&i: &&Groupname&i and &&Product&i; %end; %mend; %popular; *Gone back to the original YTD2015 list of brands and items to find YTD count of hit combination identified in Q1; data _null_; set sample end=eod; if eod then call symputx('all',_n_,'G'); run; %macro ytd; data sample4; set sample; %do j=1 %to &all; %do i=1 %to &numrows; %if group=&&Groupname&i and item=&&Product&i %then %do; match=1; %end; %else %do; match=0; %end; %end; %end; if match=1; run; %mend ytd; %ytd /*Log showed "NOTE: The data set WORK.SAMPLE4 has 0 observations and 4 variables."
... View more