The SAS Output Delivery System and reporting techniques

Proc Report : highlighting a cell on each row

Accepted Solution Solved
Reply
Respected Advisor
Posts: 4,609
Accepted Solution

Proc Report : highlighting a cell on each row

Hi All,

I would like to underline the highest value on each row of a report, as in this simple example :

data test;
input grp across $ value @@;
datalines;
1 a 1.1 1 b 1.3 1 c 1.2
2 a 2.1 2 b 2.3 2 c 2.2
3 a 3.1 3 b 3.2 3 c 3.3
;

ods rtf file="&sasforum.\reports\abcTable.rtf" style=journal;
proc report data=test nowd;
column grp across,value;
define grp / group;
define across / "" across;
define value / "" mean;
run;
ods rtf close;

I would like a result like:

abcTable.png

Thanks.

PG

PG

Accepted Solutions
Solution
‎10-31-2013 04:20 AM
SAS Super FREQ
Posts: 676

Re: Proc Report : highlighting a cell on each row

Hi PGStats

One can use arrays in a compute block. You can also change the sequence of across and analysis vars to make the headers look nicer See sample code below:

data test;
  input grp across $ value @@;
  datalines;
1 a 1.1 1 b 1.3 1 c 1.2
2 a 2.1 2 b 2.3 2 c 2.2
3 a 3.1 3 b 3.2 3 c 3.3
;

proc report data=test nowd;
 
column grp value, across _dummy;
  define grp / group;
 
define across / "" across;
 
define value / "" mean;
 
define _dummy / computed /* noprint */;

 
compute _dummy;

   
* define array for across values;
   
array _xacross{*} _c2_ _c3_ _c4_;
    acrossOffset = 1;
    maxRowValue = max(OF _xacross{*});

   
* for checking;
    _dummy = maxRowValue;

   
* find the colum equal to max ;
   
do i = 1 to dim(_xacross);
      if _xacross{i} = maxRowValue then do;
       
call define(cats("_C", i + acrossOffset, "_"), "STYLE", "style={textdecoration=underline}");
      end;
   
end;
 
endcomp;
run;

Bruno

View solution in original post


All Replies
Solution
‎10-31-2013 04:20 AM
SAS Super FREQ
Posts: 676

Re: Proc Report : highlighting a cell on each row

Hi PGStats

One can use arrays in a compute block. You can also change the sequence of across and analysis vars to make the headers look nicer See sample code below:

data test;
  input grp across $ value @@;
  datalines;
1 a 1.1 1 b 1.3 1 c 1.2
2 a 2.1 2 b 2.3 2 c 2.2
3 a 3.1 3 b 3.2 3 c 3.3
;

proc report data=test nowd;
 
column grp value, across _dummy;
  define grp / group;
 
define across / "" across;
 
define value / "" mean;
 
define _dummy / computed /* noprint */;

 
compute _dummy;

   
* define array for across values;
   
array _xacross{*} _c2_ _c3_ _c4_;
    acrossOffset = 1;
    maxRowValue = max(OF _xacross{*});

   
* for checking;
    _dummy = maxRowValue;

   
* find the colum equal to max ;
   
do i = 1 to dim(_xacross);
      if _xacross{i} = maxRowValue then do;
       
call define(cats("_C", i + acrossOffset, "_"), "STYLE", "style={textdecoration=underline}");
      end;
   
end;
 
endcomp;
run;

Bruno

Respected Advisor
Posts: 4,609

Re: Proc Report : highlighting a cell on each row

Thanks a lot Bruno! You made my day! - PG

PG
☑ This topic is SOLVED.

Need further help from the community? Please ask a new question.

Discussion stats
  • 2 replies
  • 545 views
  • 3 likes
  • 2 in conversation