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 more