2014-12-05 136 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