SAS Proc报告风格

时间:2015-10-30 10:02:51

标签: sas report proc

我正在编写一个代码来显示包含proc报告的以下记录。我想用红色突出显示每行的最大数量。我尝试过代码但突出显示了不同的值。请在以下代码中提供更正,以显示正确突出显示的值。

    data records;
    input a1 a2 a3 a4 a5;
    cards;
    37 95 80 52 85 
    94 .  7  10 14 
    64 5  71 14 92 
    .  55 38 .  46 
    ;
    run;

    proc report data=records nowd;
    column a1 a2 a3 a4 a5;
    define a1/display;
    define a2/display;
    define a3/display;
    define a4/display;
    define a5/display;

    compute a1;
    if a1=Max(a1,a2,a3,a4,a5) then call define('a1','style','style={foreground=white background=red}');
    endcomp;
    compute a2;
    if a2=Max(a1,a2,a3,a4,a5) then call define('a2','style','style={foreground=white background=red}');
    endcomp;
    compute a3;
    if a3=max(a1,a2,a3,a4,a5) then call define('a3','style','style={foreground=white background=red}');
    endcomp;
    compute a4;
    if a4=max(a1,a2,a3,a4,a5) then call define('a4','style','style={foreground=white background=red}');
    endcomp; 
    compute a5;
    if a5=max(a1,a2,a3,a4,a5) then call define('a5','style','style={foreground=white background=red}');
    endcomp; 
    run;

1 个答案:

答案 0 :(得分:2)

据我所知,如果你使用计算声明,顺序很重要。因此,如果你使用计算a1,那时只有a1有一个值,计算a2意味着只有a1和a2有一个值,依此类推......

因此,您必须将最后一列用于计算语句,然后所有列都有值,结果应该没问题。

Sas page上找到了这个:

  

注意:计算变量的位置很重要。 PROC REPORT从左到右为报表的行中的列分配值。因此,您不能将计算变量的计算基于报表

中右侧出现的任何变量

所以试试这种方式,它对我有用:

proc report data=records nowd;
column a1 a2 a3 a4 a5;
define a1/display;
define a2/display;
define a3/display;
define a4/display;
define a5/display; 

compute a5;
if a1=Max(a1,a2,a3,a4,a5) then call define('a1','style','style={foreground=white background=red}');
if a2=Max(a1,a2,a3,a4,a5) then call define('a2','style','style={foreground=white background=red}');
if a3=max(a1,a2,a3,a4,a5) then call define('a3','style','style={foreground=white background=red}');
if a4=max(a1,a2,a3,a4,a5) then call define('a4','style','style={foreground=white background=red}');
if a5=max(a1,a2,a3,a4,a5) then call define('a5','style','style={foreground=white background=red}');
endcomp; 
run;

enter image description here