0

SAS Enterprise Guide で棒グラフを作成しようとしています。グラフは月ごとの貯蓄額です。入力データは

Ref      Date       Savings
A      03JUN2013      1000
A      08JUN2013      2000
A      08JUL2013      1500
A      08AUG2013      300
A      08NOV2013      100
B      09DEC2012      500
B      09MAY2013      400
B      19MAY2013      5999
B      09OCT2013      511
C      15OCT2013      1200
C      01NOV2013      1500

最初のステップは、日付を月に変換することです。私は PROC MEANS を使用して、参考文献による月ごとの総節約額を計算します。次に、棒グラフを作成します。私が得ている問題は、棒グラフが本来あるべき順番になっていないことです。JUN JUL AUGではなく、AUG13 JUl13 JUN13 ..などです。

PROC SQL;
   CREATE TABLE SAVINGS_11 AS 
   SELECT 
      PUT(DATE,monname3.) AS MONTH,
          (DATE) FORMAT=MONNAME3. AS MONTH1,
      MONTH(DATE) AS MONTH2,
      PUT(DATE,MONYY5.) AS MONTH3,
      (DATE) FORMAT=MONYY5. AS MONTH4,
          DATE, 
          REF,  
          SAVINGS

      FROM INPUT;
QUIT;

/* -------------------------------------------------------------------
   Sort data set
   ------------------------------------------------------------------- */
PROC SORT
    DATA=SAVINGS_11(KEEP=SAVINGS MONTH MONTH1 MONTH2 MONTH3 MONTH4 REF)
    OUT=SORT1;
    BY REF;
RUN;
/* -------------------------------------------------------------------
   Run the Means Procedure
   ------------------------------------------------------------------- */
TITLE;
TITLE1 "Summary";
TITLE2 "Results";
FOOTNOTE;
PROC MEANS DATA=SORT1
    NOPRINT
    CHARTYPE
    NOLABELS
    NWAY

        SUM NONOBS  ;
    VAR SAVINGS;
    CLASS MONTH /   ORDER=DATA ASCENDING;
    BY REF;
    ID MONTH1 MONTH2 MONTH3 MONTH4;

OUTPUT  OUT=MEANSUMMARY
        SUM()=

    / AUTONAME AUTOLABEL  WAYS INHERIT
    ;
RUN;
/* -------------------------------------------------------------------
   End of task code.
   ------------------------------------------------------------------- */
RUN; QUIT;
TITLE; FOOTNOTE;

PROC SORT
    DATA=MEANSUMMARY(KEEP=MONTH MONTH2 "SAVINGS_Sum"n REF)
    OUT=SORT2
    ;
    BY REF MONTH2;
RUN;
Axis1
    STYLE=1
    WIDTH=1
    MINOR=NONE


;
Axis2
    STYLE=1
    WIDTH=1


;
TITLE;
TITLE1 "Bar Chart";
FOOTNOTE;
PROC GCHART DATA=SORT2
;
    VBAR 
     MONTH
 /
    SUMVAR="SAVINGS_Sum"n
    CLIPREF
FRAME   LEVELS=ALL
    TYPE=SUM
    INSIDE=SUM
    COUTLINE=BLACK
    RAXIS=AXIS1
    MAXIS=AXIS2
;
    BY REF;
/* -------------------------------------------------------------------
   End of task code.
   ------------------------------------------------------------------- */
RUN; QUIT;
TITLE; FOOTNOTE;

どのような形式を使用しても、最終結果は順番どおりではありません。助けてください。

4

2 に答える 2

1

ジョーが上で述べたこととは別に、貯蓄を行った x 軸上の各参照のすべての月を表示できるようにする場合DISCRETEは、ステートメントにキーワードを含める必要もあります(注: これにより、次の場合に警告メッセージが生成されます)。VBAR一部の参照には、一部の月に節約がありません)。

次のコードを試すことができます。これにより、目的の出力が生成されると思います。

PROC SQL;
   CREATE TABLE DATA_TO_PLOT AS 
   SELECT 
      REF
      ,INPUT(PUT(date,YYMMN6.),YYMMN6.) FORMAT =DATE9. AS MONTH
      ,SUM(Savings) AS MONTHLY_SAVINGS
      FROM INPUT
    GROUP BY 1,2
    ORDER BY 1,2 ;
QUIT;

Axis1 STYLE=1 WIDTH=1 MINOR=NONE;
Axis2 STYLE=1 WIDTH=1;
TITLE;
TITLE1 "Bar Chart";

PROC GCHART DATA=DATA_TO_PLOT;
VBAR MONTH 
 /  SUMVAR=MONTHLY_SAVINGS
    CLIPREF
FRAME    TYPE=SUM
    COUTLINE=BLACK
    RAXIS=AXIS1
    MAXIS=AXIS2
INSIDE=SUM
    DISCRETE
;
    FORMAT MONTH MONYY7.;
    BY Ref;
RUN; QUIT;
于 2013-11-06T16:36:00.843 に答える