/*------------------------------------------------------------------------------------------ * Kreuztabelle als Data-Set so wie aus proc tabulate * * Code der umständlichen Variante *------------------------------------------------------------------------------------------/ title2 "Kreuztabelle ('tabulate', je mm-Wert eine Doppel-Spalte mit 'Sum(ww) + Mean(ww)')"; PROC TABULATE DATA=tmp_SD0 MISSING ; CLASS ff mm; /* Gruppierungs-Variablen */ VAR ww; /* ww ist für Zellen-Summe */ TABLE ff /* "runter" */ , mm *(ww*SUM*f=commax6.2 ww*MEAN*f=commax6.2) /* "quer", je mm-Wert eine DoppelSpalte */ / rts=9 ; keylabel SUM='Summe' MEAN='Mittelwert' ; label ff='Filiale' mm='Monat' ww='Wert' ; RUN; title2 "Ausgabe ist nur Test-Info: "; title3 "Kreuztabelle ('tabulate', je mm-Wert eine Spalte mit 'Sum(ww)')"; PROC TABULATE DATA=tmp_SD0 MISSING out=tmp_SD1(drop=_TYPE_ _PAGE_ _TABLE_); CLASS ff mm; /* Gruppierungs-Variablen */ VAR ww; /* ww ist für Zellen-Summe */ TABLE ff /* "runter" */ , mm *(ww*SUM*f=commax6.2) /* "quer", je mm-Wert eine Spalte */ / rts=9 /* rts == RowTableSize */ ; keylabel SUM='Summe' ; label ff='Filiale' mm='Monat' ww='Wert' ; RUN; title3 "Ausgabe-Data-Set aus proc tabulate (Kreuztabelle je mm-Wert eine Spalte mit 'Sum(ww)')"; *proc contents data=tmp_SD1; run; *proc print data=tmp_SD1; run; title2 "Ausgabe ist nur Test-Info: "; title3 "Kreuztabelle ('tabulate', je mm-Wert eine Spalte mit 'Mean(ww)')"; PROC TABULATE DATA=tmp_SD0 MISSING out=tmp_SD2(drop=_TYPE_ _PAGE_ _TABLE_); CLASS ff mm; /* Gruppierungs-Variablen */ VAR ww; /* ww ist für Zellen-Summe */ TABLE ff /* "runter" */ , mm *(ww*MEAN*f=commax6.2) /* "quer", je mm-Wert eine Spalte */ / rts=9 ; keylabel MEAN='Mittelwert' ; label ff='Filiale' mm='Monat' ww='Wert' ; RUN; title3 "Ausgabe-Data-Set aus proc tabulate (Kreuztabelle je mm-Wert eine Spalte mit 'Mean(ww)')"; *proc contents data=tmp_SD2; run; *proc print data=tmp_SD2; run; title3 "Kreuztabelle als Data-Set wie aus proc tabulate (Kreuztabelle je mm-Wert eine Spalte mit 'Sum(ww)')"; proc transpose data=tmp_SD1 out=tmp_SD1t(drop=_name_) prefix=sum_; by ff; id mm; run; *proc print data=tmp_SD1t; run; title3 "Kreuztabelle als Data-Set wie aus proc tabulate (Kreuztabelle je mm-Wert eine Spalte mit 'Mean(ww)')"; proc transpose data=tmp_SD2 out=tmp_SD2t(drop=_name_) prefix=mean_; by ff; id mm; run; *proc print data=tmp_SD2t; run; title2 "Gesamt-Kreuztabelle als Data-Set wie aus proc tabulate"; title3 " (Kreuztabelle je mm-Wert eine DoppelSpalte mit 'Sum(ww) + Mean(ww)')"; data tmp_SD3; merge tmp_SD1t (in=a) tmp_SD2t (in=b) ; by ff; if a or b; run; proc print data=tmp_SD3; run;