The SAS Output Delivery System and reporting techniques

PDF Report: How to let a group variable show up multiple times ...

Accepted Solution Solved
Reply
Contributor
Posts: 30
Accepted Solution

PDF Report: How to let a group variable show up multiple times ...

I have a pdf report like below:

 

.......

column CPN VINT State Var1 Var2

define CPN / order;

define VINT / order descending;

define State / order;

define Var1 /sum;

define Var2 /sum;

........

 

In the final report,

CPN only show up once for each CPN group (CPN1 X All VINT X All State).

I want CPN show up every time for each VINT not once.

 

How can I do it?

 

Thanks.

 

Jian


Accepted Solutions
Solution
‎04-29-2016 10:31 AM
Trusted Advisor
Posts: 1,118

Re: PDF Report: How to let a group variable show up multiple times ...

Posted in reply to jzhang332002

Hi Jian,

 

Here is an example (tested only with listing output, though):

data test;
input CPN VINT State $ Var1 Var2;
cards;
1 5 FL 1 11
1 8 DE 2 22
1 8 AK 3 33
1 5 MI 4 44
2 7 TX 5 55
2 4 NC 6 66
2 7 GA 7 77
;

/* Before */

proc report data=test nowd;
column CPN VINT State Var1 Var2;
define CPN / order;
define VINT / order descending;
define State / order;
define Var1 / sum;
define Var2 / sum;
run;

/* After */

proc report data=test nowd;
column CPN CPN_ VINT State Var1 Var2;
define CPN / order noprint;
define CPN_ / computed '      CPN';
define VINT / order descending;
define State / order;
define Var1 / sum;
define Var2 / sum;
compute before CPN;
  temp=CPN;   /* Temporary variable TEMP is assigned the */
endcomp;      /* value of CPN when it is available.      */
compute before VINT;
  temp2=VINT; /* Temporary variable TEMP2 is assigned the */
endcomp;      /* value of VINT when it is available.      */
compute CPN_ / character length=9;
  if temp2 ne lag(temp2) then CPN_=put(temp,9.);
endcomp;
run;

This is partially based on Carpenter's Complete Guide to the SAS® REPORT Procedure, p. 185 f., where they repeat the value on each row. I introduced the LAG function to restrict the repetitions to the first observation of each VINT group. Maybe there is a more elegant way to accomplish this.

View solution in original post


All Replies
Solution
‎04-29-2016 10:31 AM
Trusted Advisor
Posts: 1,118

Re: PDF Report: How to let a group variable show up multiple times ...

Posted in reply to jzhang332002

Hi Jian,

 

Here is an example (tested only with listing output, though):

data test;
input CPN VINT State $ Var1 Var2;
cards;
1 5 FL 1 11
1 8 DE 2 22
1 8 AK 3 33
1 5 MI 4 44
2 7 TX 5 55
2 4 NC 6 66
2 7 GA 7 77
;

/* Before */

proc report data=test nowd;
column CPN VINT State Var1 Var2;
define CPN / order;
define VINT / order descending;
define State / order;
define Var1 / sum;
define Var2 / sum;
run;

/* After */

proc report data=test nowd;
column CPN CPN_ VINT State Var1 Var2;
define CPN / order noprint;
define CPN_ / computed '      CPN';
define VINT / order descending;
define State / order;
define Var1 / sum;
define Var2 / sum;
compute before CPN;
  temp=CPN;   /* Temporary variable TEMP is assigned the */
endcomp;      /* value of CPN when it is available.      */
compute before VINT;
  temp2=VINT; /* Temporary variable TEMP2 is assigned the */
endcomp;      /* value of VINT when it is available.      */
compute CPN_ / character length=9;
  if temp2 ne lag(temp2) then CPN_=put(temp,9.);
endcomp;
run;

This is partially based on Carpenter's Complete Guide to the SAS® REPORT Procedure, p. 185 f., where they repeat the value on each row. I introduced the LAG function to restrict the repetitions to the first observation of each VINT group. Maybe there is a more elegant way to accomplish this.

☑ This topic is solved.

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

Discussion stats
  • 1 reply
  • 306 views
  • 1 like
  • 2 in conversation