Dear all, Thanks for all your suggestions. There is a bit different on the data structure. I have thousands of data by month. Each of them has a total amount, apr and other businese information. I need to sum up the total amount, average out the total amount and calculate the weighted apr as below. In my case, I need to computed like fifty summary columns. I understand I can use "proc report->proc transpose->ods + proc report" to finish it but it seems too mess for fifty columns. I will like to ask if there is any chance to have a shorter way? Thanks a lot. data orig (sortedby=month);
infile datalines dlm=',';
input month :3.
count :8.
amount :dollar20.
apr :percent9.1
;
datalines;
5,846,153248457,0.284
5,607,61884004,0.1518
6,1154,186453156,0.296
6,700,227198428,0.330592581
7,1265,284657518,0.134
7,1278,283755697,0.115971397
8,2045,68945324,0.148
8,2818,87542111,0.214139999
;
run;
data a_1;
set orig;
weighted_apr = amount*apr;
run;
proc report data = a_1;
columns month count amount weighted_apr avg_amt avg_apr;
define month /group ;
define count/sum;
define amount/sum format=dollar20.;
define weighted_apr / sum noprint;
define avg_amt / computed format=dollar20.2 ;
define avg_apr / computed format=percent9.1 ;
compute avg_apr ;
avg_amt = amount.sum / count.sum;
avg_apr = weighted_apr.sum/amount.sum;
endcomp;
run;
... View more