2014-12-05 340 views
0

我在SAS中使用模板和sgrender創建基於不同類變量的熱圖。我希望輸出能夠根據類變量每次更新標題到什麼類變量的值。到目前爲止,我的代碼是這樣的(它打印,如果我告訴它爲一個字符串冠軍,但我不能得到它取決於變量會發生變化):將標題添加到SAS輸出圖

proc template; 
    define statgraph heatmapparm; 
    begingraph; 
    entrytitle 'INSERT TITLE HERE';  *Update title here based on classVar; 
     layout overlay; 
     heatmapparm x=magX2 y=magZ2 colorresponse=percent/colormodel=(blue yellow red) 
      name="heatmapparm" xbinaxis=false ybinaxis=false datatransparency=0; 
     continuouslegend "heatmapparm"/location=outside valign=bottom; 
     endlayout; 
    endgraph; 
    end; 
run; 

title #byval(classVar); 
proc sgrender data=dataSet template=heatmapparm; 
    by classVar; 
run; 

謝謝大家!

+2

查看proc模板的動態變量部分以及條目標題。 – Reeza 2014-12-06 00:20:35

回答

0

使用宏變量來改變標題。下面是一個示例

%let classVar=VARIABLEVALUE1; 

title &classVar.; 
proc sgrender data=dataSet template=heatmapparm; 
    by &classVar.; 
run; 

您可以隨時將proc sgrender代碼放入SAS MACRO中編寫更乾淨的代碼。

+0

@Saliva我想我正在關注你在做什麼,但你是什麼意思的VARIABLEVALUE1?如果你的意思是字面值是什麼,在我的情況下它是一個字符串,我不能得到它的工作。另外,我是否應該刪除proc模板中的代碼行標題?謝謝! – Code4Days 2014-12-05 23:51:13

+0

標題在SAS結果查看器中用我以前的代碼輸出;然而,我希望它被包含在ODS輸出中(因爲這將是我將來提到的)。謝謝! – Code4Days 2014-12-05 23:54:09

+0

VARIABLEVALUE1是我在聲明中創建的宏變量的賦值。你可以替換它。這是如何修改標題的另一個例子:'%LET STOCK = CVX; TITLE「油桶反對%UPCASE(&STOCK。)股票價格」;' – Salva 2014-12-06 00:09:32