Dear all,
I have a proc report with a computed variable for which I need a total in the last row.
options missing = '';
proc report data=mydata;
column firstfield hiddenfield myfield [some more fields];
define firstfield / display noprint;
define hiddenfield / display noprint;
define myfield / computed;
[some more fields]
compute myfield;
if firstfield eq 1 then do;
myfield = hiddenfield;
end;
else do;
myfield = . ;
end;
endcomp;
run;
The data behind this looks like this (first 2 columns - and the third column should be the computed field):
the idea behind this is to suppress repeated values and sum in the total only the distinct values per firstfield = 1
| firstfield | hiddenfield | myfield |
|---|
| 1 | 92 | 92 |
| 0 | 92 | |
| 0 | 92 | |
| 1 | 236 | 236 |
| 0 | 236 | |
| 0 | 236 | |
| 0 | 236 | |
Now when I do a rbreak the total for hiddenfield is 3*92 + 4*236. But for myfield I need the total 1*92 + 1*236.
Unfortunaltely the SAS automatism does a missing value. I'd love to have the rbreak just as a sum of the myfield values.
The only idea I had was using the trick of aggregating the values by temporary variables:
compute before;
mytotal = 0;
endcomp;
compute myfield;
mytotal = myfield + mytotal;
if _break_ eq "_RBREAK_ then do;
myfield = mytotal;
end;
endcomp;
Does anybody know some other solution?
Best wishes
Eva