@ChrisNZ wrote: proc sql;
select DATE
, sum(VALUE*(CAT1=1))/sum(CAT1=1) as RATE1
...
from HAVE
group by DATE;
Oh! Now, that's danged clever. And I suppose that if the CATn variables had possible values greater than 1, then we could do the following:
proc sql;
select DATE
, sum(VALUE*(CAT1>0))/sum(IFN(CAT1>0,CAT1,0)) as RATE1 FORMAT=PERCENT10.2
, sum(VALUE*(CAT2>0))/sum(IFN(CAT2>0,CAT2,0)) as RATE2 FORMAT=PERCENT10.2
, sum(VALUE*(CAT3>0))/sum(IFN(CAT3>0,CAT3,0)) as RATE3 FORMAT=PERCENT10.2
, sum(VALUE*(CAT4>0))/sum(IFN(CAT4>0,CAT4,0)) as RATE4 FORMAT=PERCENT10.2
, sum(VALUE*(CAT5>0))/sum(IFN(CAT5>0,CAT5,0)) as RATE5 FORMAT=PERCENT10.2
, sum(VALUE*(CAT6>0))/sum(IFN(CAT6>0,CAT6,0)) as RATE6 FORMAT=PERCENT10.2
, sum(VALUE*(CAT7>0))/sum(IFN(CAT7>0,CAT7,0)) as RATE7 FORMAT=PERCENT10.2
from HAVE
group by DATE;
Jim
... View more