BookmarkSubscribeRSS Feed
Xinxin
Obsidian | Level 7

This is a part in my macro:

 

PROC MEANS DATA=&DSN NOPRINT NWAY;

CLASS TIME_PERIOD QNUM aggregate BRAND;

VAR FLAG;

WEIGHT XMKT_WEIGHT;

OUTPUT OUT=&DSN._WTDMEANS SUMWGT=BASE_WTD SUM=CNT_WTD MEAN=PER_WTD ;

RUN;

For example, I have Markets=1,2,3,4,......60 and for example. aggregate=1002 combines markets (5,6, 13,14).

So in the above proc means, I want WEIGHT = WEIGHT (my weight variable ) if aggregate=1,2,....60 but I want it to use XMKT_WEIGHT if it's a combination of markets viz aggregate=1002. How can I tell proc means which weight to use based on a condition.

If it helps, aggregate=1 is market=1, aggregate=2 is market=2......upto aggregate=60 is market=60...and then aggregate=1000 is market=1,2,3, aggregate=1001 is market=2, 3, 9, 10 etc which I have in a table:

AGGREGATE MARKET

     1                    1

     2                    2

     1002               5

     1002               6

     1002               13  .......... ETC                     

Thanks!

2 REPLIES 2
Reeza
Super User

Create a new weight variable in a data step instead that has the weights it would need to use. I don't believe there's a way to implement that in proc means, besides running different procs.

data_null__
Jade | Level 19

Transpose your data or otherwise rearange it such that you have a BY variable that represents the change in weight variables.

hackathon24-white-horiz.png

The 2025 SAS Hackathon has begun!

It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.

Latest Updates

What is Bayesian Analysis?

Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 1488 views
  • 0 likes
  • 3 in conversation