Summe einer "computed" Spalte
Reporting & Visualisierung |
Eingetragen von Melinda. | 15 November, 2007 - 10:37
Hallo zusammen,
weil ich regelmäßig mit Berichten arbeite, will ich diese mit PROC REPORT anstatt SQL oder SUMMARY erstellen. Viele Sachen funktionieren gut, aber wenn ich die Summe einer berechneten (im PROC REPORT computed) Spalte berechnen will, ergibt es Missing. Es liegt daran, dass ich eine Spalte, mit der ich rechne, nicht summiere, und deshalb ergibt sich dadurch ein Missing.
Hier sind Beispieldaten und der Code dazu. Das Problem liegt an der letzten Zeile der letzten Spalte in der erzeugten Tabelle.
data test;
infile datalines dsd delimiter=',';
input Geschlecht $ Jahr Anzahl06 Anzahl07 Bewertung;
datalines;
M,2007,34,32,10
W,2006,15,19,2
M,2006,11,13,9
W,2007,18,24,3
W,2007,56,32,11
;
title;
proc report data = test;
column Geschlecht Anzahl06,(sum pctsum) Anzahl07,(sum pctsum) Bewertung diff;
define Geschlecht / display 'Attribute des Merkmals';
define Jahr / group;
define Anzahl / analysis sum 'Anzahl' format=commax10.;
define sum / 'Anzahl';
define pctsum / 'Anteil' format=percent10.2;
define Bewertung / display 'Bewertung';
define diff /computed 'Unterschied' format=PCNT10X.;
define multi / computed 'Berechnet';
compute diff;
diff=Anzahl07.pctsum-Anzahl06.pctsum;
if diff < 0 then
call define(_col_,'style','style=[foreground=white background=red]');
if diff = 0 then
call define(_col_,'style','style=[foreground=white background=white]');
if diff > 0 then
call define(_col_,'style','style=[foreground=black background=green]');
endcomp;
compute multi;
multi=diff*Bewertung;
endcomp;
rbreak after / dol summarize;
quit;run;
infile datalines dsd delimiter=',';
input Geschlecht $ Jahr Anzahl06 Anzahl07 Bewertung;
datalines;
M,2007,34,32,10
W,2006,15,19,2
M,2006,11,13,9
W,2007,18,24,3
W,2007,56,32,11
;
title;
proc report data = test;
column Geschlecht Anzahl06,(sum pctsum) Anzahl07,(sum pctsum) Bewertung diff;
define Geschlecht / display 'Attribute des Merkmals';
define Jahr / group;
define Anzahl / analysis sum 'Anzahl' format=commax10.;
define sum / 'Anzahl';
define pctsum / 'Anteil' format=percent10.2;
define Bewertung / display 'Bewertung';
define diff /computed 'Unterschied' format=PCNT10X.;
define multi / computed 'Berechnet';
compute diff;
diff=Anzahl07.pctsum-Anzahl06.pctsum;
if diff < 0 then
call define(_col_,'style','style=[foreground=white background=red]');
if diff = 0 then
call define(_col_,'style','style=[foreground=white background=white]');
if diff > 0 then
call define(_col_,'style','style=[foreground=black background=green]');
endcomp;
compute multi;
multi=diff*Bewertung;
endcomp;
rbreak after / dol summarize;
quit;run;
Vielen Dank schon im Voraus.
Mit freundlichen Grüßen
Melinda Bede
