{data Testfall2016; input Date$ LotWgt NoHead AvgWt Price; cards; 10/15/2016 314 1 314 1.13 10/15/2016 317 1 317 1.10 10/15/2016 384 1 384 1.26 10/15/2016 771 2 386 0.94 10/15/2016 2374 6 396 1.22 10/15/2016 399 1 399 1.20 10/15/2016 4239 10 424 1.28 10/15/2016 428 1 428 1.19 10/15/2016 874 2 437 1.22 10/15/2016 2629 6 438 1.20 10/15/2016 911 2 456 1.15 10/15/2016 2401 5 480 1.28 10/15/2016 3400 7 486 1.26 10/15/2016 2026 4 507 1.23 10/15/2016 1030 2 515 1.17 10/15/2016 524 1 524 0.82 10/15/2016 3309 6 552 1.21 10/15/2016 4604 8 576 1.20 10/15/2016 1183 2 592 0.79 10/15/2016 1297 2 649 1.00 10/15/2016 4678 7 668 1.20 10/15/2016 685 1 685 0.99 10/15/2016 743 1 743 0.96 10/15/2016 4706 6 784 1.16 10/15/2016 3149 4 787 1.03 RUN; data TestFall2016_1; set TestFall2016; if color in (5:8) OR sex in (2:9) OR PreCond=0 then delete; Run; data TestFall2016_2; set TestFall2016_1; avgwgt=lotwgt/nohead; If AvgWgt<300 then delete; If AvgWgt>799 then delete; if (avgwgt ge 300) AND (avgwgt le 399) then Wgt300399=3; else Wgt300399=0; if avgwgt=. then Wgt300399=.; if (avgwgt ge 400) AND (avgwgt le 499) then Wgt400499=4; else Wgt400499=0; if avgwgt=. then Wgt400499=.; if (avgwgt ge 700) AND (avgwgt le 799) then Wgt700799=7; else Wgt700799=0; if avgwgt=. then Wgt700799=.; Run; data TestFall2016_3; set TestFall2016_2; WtdPrice=(sum(lotwgt*price))/sum (Lotwgt); proc means data=testfall2016_3; class Wgt300399; var Price; weight WtdPrice; output out = want mean= weighted_avg; run; proc means data=testfall2016_3; class Wgt400499; var Price; weight WtdPrice; output out = want mean= weighted_avg; run; proc means data=testfall2016_3; class Wgt700799; var Price; weight WtdPrice; output out = want mean= weighted_avg; run; proc print data=testfall2016_3; run;} This code runs. The weighted average price for 300399, 400499 and 700799 is 1.1597, 1.2472, and 1.0951, respectively.
... View more