2012-11-03 85 views
3

您好我在SAS中創建圖表時遇到問題。我的數據如下: Date,comp_1,comp_2,comp_3,total_value。我的數據按日期排序。變量comp_代表公司在特定數據下的價值。這是我的時刻代碼:SAS Proc Gchart堆積區域圖

proc gplot data=dev2.Actionfinal2; 
    plot (comp_1 comp_2 comp_3)*date 
     /overlay areas=3 vaxis=0 to 100000 by 20000; 
    symbol1 i=join v= cv= ci=red; 
    symbol2 i=join v= cv= ci=blue; 
    symbol3 i=join v= cv= ci=green; 
run; 
quit; 

這個圖表告訴我覆蓋在3家公司的價值,但我希望他們堆疊,所以我可以看到公司的每個日期的總價值。我需要重新格式化我的數據,我可以使用什麼選項?

回答

3

您將需要創建一個新變量,其中包含三個「comp」變量的聚合值。有一個很好的例子見this SAS usage note。這應該讓你開始並歡迎來到StackOverflow!

更新:我想我更好地理解這個問題:您需要對數據進行非規格化(將列轉化爲觀察值)。所以試試這個:

data test(keep=company value date); 
    set dev2.Actionfinal2; 
    company = 1; value = comp_1; output; 
    company = 2; value = comp_2; output; 
    company = 3; value = comp_3; output; 
run; 

proc sort data=test; 
    by date company; 
run; 

data test2; 
    set test; 
     by date; 
    if first.date then new_y=0; 
    new_y + value; 
run; 

symbol1 i=join v= cv= ci=red; 
symbol2 i=join v= cv= ci=blue; 
symbol3 i=join v= cv= ci=green; 

proc gplot data=test2; 
    plot new_y*date=company 
     /areas=3 vaxis=0 to 100000 by 20000; 
run; 
quit; 
+0

不錯,它給我我需要的!非常感謝!! SAS中的圖形是完美的,我可能還有一個跟進問題。 我希望最終結果是PDF格式,所以我使用了一個經典的ODS PDF語句,而不是像SAS中那樣具有相同的圖形,它爲每個公司生成一個帶有3個圖形的PDF文檔...我是否需要指定一個選項獲得相同的結果? –

+1

對不起,但我對ODS方面並不是很有天賦。無論如何,你最好的辦法是提出另一個特定於這個新問題的S/O問題。你可以參考這個問題(給出一個鏈接),但是提供了你嘗試過的'PROC GPLOT'和'ODS'語句的例子。我相信你會得到一個很好的答覆。另外,如果您滿意,請「接受」這個答案(因此它顯示爲「已回答」)。 – BellevueBob