Help using Base SAS procedures

Creating weighted average

Posts: 0

Creating weighted average


I am trying to create the functionality of weighted average using SAS and need some help with the code.

I have the following variables in my dataset arranged in the following order.

Product - (Consumer)
Rewards code - (Y or N)
Risk type - (R1 to R5, Novalue)
Relationship -(Full, medium, low)
Number of accts

For Risktype = Novalue and Relationship type = Full

I am trying to compute the weighted average as
=(Dollerprofit(of R1-Full)*numberofaccts(of R1-Full)+
Dollerprofit(of R2-Full)*numberofaccts(of R2-Full)+
Dollerprofit(of R3-Full)*numberofaccts(of R3-Full)+
Dollerprofit(of R4-Full)*numberofaccts(of R4-Full)+
Dollerprofit(of R5-Full)*numberofaccts(of R5-Full))/
sum[numberofaccts(of R1-Full)+ numberofaccts(of R2-Full)+
numberofaccts(of R3-Full)+ numberofaccts(of R4-Full)+
numberofaccts(of R5-Full))

The similar needs to be achieved for
Risktype = Novalue and Relationship type = medium
Risktype = Novalue and Relationship type = low

and needs to be done for all Rewards = Yes and No.

Could anyone tell me how to achieve this using SAS

Super User
Posts: 3,102

Re: Creating weighted average

I suggest you investigate the MEANS procedure. The combination of the MEAN statistic with the WEIGHT statement will do a weighted average. If I understand your description correctly it appears you are weighting by the number of accounts.

Your skeleton code will probably look like something like this:

proc means data = xxx nway;
where risk type in R1 to R5;
class relationship;
var dollarprofit;
weight Number of accts;
output out = xxx_out
mean =

You can also do weighted averages in the REPORT procedure but the learning curve is much higher.
Posts: 0

Re: Creating weighted average

Thank you this works. Appreciate it.
Ask a Question
Discussion stats
  • 2 replies
  • 2 in conversation