2016-05-18 16 views
1

私はPROC REPORTを使用して加重和のレポートを生成しています。 MEAN統計情報の両方で要約する必要がある2つの列があります。その上に、私は総重量を出力したい。PROCレポート、同じ統計量を持つ複数の列

私には2つの問題があります。

  1. 私は が合計されている変数を反映するために、各サムのタイトルを取得するように見えることはできません。

  2. 各列に異なる形式が必要です。ここで

は、いくつかのサンプルデータです:

data test; 
format lev1-lev3 $3. weight percent10.2 duration 6.2 convexity 6.4; 
informat weight percent10.2 duration 6.2 convexity 6.4; 
input lev1 lev2 lev3 weight duration convexity; 
datalines; 
A C H 16.11% 3.21 0.6182 
A C I 3.83% 9.06 1.2244 
A D J 7.67% 2.21 3.4010 
A D K 16.90% 3.98 0.0303 
B E L 2.68% 1.88 1.9515 
B E M 16.68% 4.36 3.1851 
B F N 20.79% 2.64 0.1145 
B F O 15.34% 5.55 2.4408 
; 
run; 

私はPROC REPORTで物事を定義するには、いくつかの方法を試してみました。ここでは、多くの一つである:

proc report data=test nowd out=report; 
column lev1 lev2 lev3 duration,(SUMWGT MEAN) convexity,(Mean); 
weight weight; 
define lev1/group; 
define lev2/group; 
define lev3/group; 
define duration/'Duration' ; 
define sumwgt/'Weight' format=percent10.2; 
define mean/'' format=6.2; 
define convexity/'Convexity'; 
*define mean/'Convexity' format=6.4; 

break before lev1/summarize ; 
break before lev2/summarize ; 
rbreak before/summarize; 
run; 

私の究極の目標は、のようになります。

Lev1 Lev2 Lev3 Weight Duration Convextiy 
       100.00% 3.88  1.3943 
A    44.51% 3.83  0.9267 
... 

私はまたPROC TABULATEでプレイしましたが、私はそれが提示テーブルのファンの少ないです。

例TABULATEの混乱:

PROC TABULATE DATA=WORK.test; 
    VAR duration convexity; 
    CLASS LEV1/ ORDER=UNFORMATTED MISSING; 
    CLASS LEV2/ ORDER=UNFORMATTED MISSING; 
    CLASS LEV3/ ORDER=UNFORMATTED MISSING; 

TABLE 
/* Row Dimension */ 
ALL={LABEL="+"} 
LEV1*(
    ALL={LABEL="+"} 
    LEV2*(
    ALL={LABEL="+"} 
    LEV3)) 
, 

/* Column Dimension */ 
duration={LABEL="Weight"}*SumWgt={LABEL=""}*f=percent10.2 
duration={LABEL="Duration"}*Mean={LABEL=""}*f=6.2 
convexity={LABEL="Convexity"}*Mean={LABEL=""}*f=6.4; 

WEIGHT weight; 

RUN; 
+0

私は[PROC-レポートタグ]で大丈夫個々のタグを[tag:proc-tabulate]のように低レベルにすることはできません。 – Joe

答えて

1

私はあなたがPROC REPORTから欲しいもの正確を得る課題を持っていると思います。たぶんCynthia @ SASがそれを理解できるかもしれませんが、わかりませんが、特に行ヘッダーを正しく取得することは非常に困難です。

私は、(PROC MEANSなどを使用して)手段を前処理し、その結果を報告することをお勧めします。非常に簡単です。

これは、例えば、あなたが望むものに近いかもしれない。それは本当に、独自のプログラミング環境だが、上の標準的な慣行がSOであるとしてタグ:

proc means data=test; 
class lev1 lev2 lev3; 
var duration convexity; 
weight weight; 
types() lev1 lev1*lev2 lev1*lev2*lev3; 
output out=test_out 
    sumwgt(duration)=sumwgt mean(duration)= mean(convexity)=; 
run; 


proc report data=test_out; 
columns lev1-lev3 sumwgt duration convexity; 
define lev1/order missing; 
define lev2/order missing; 
define lev3/order missing; 
define sumwgt/display format=percent9.2; 
define duration/display format=6.2; 
define convexity/display format=6.4; 
run; 
関連する問題