Hello,
I am pretty new to SAS but I hve to maintain some older programs. Now I am stuck with a problem.
I have a program that does this:
PROC MEANS NOPRINT;
VAR AMOUNT AVG1 AVG2;
BY OBJNAME;
OUTPUT OUT=WORK.SUMM1
SUM(AMOUNT) = AMOUNT
MEAN(AVG1 AVG2) =
AVG1 AVG2 ;
Sadly the input data of AVG1 and AVG2 is not an average at all but the cumulated data, so to get real averages at the end I would have to do sum up AVG1 and AVG2 for each OBJNAME and divide it by AMOUNT.
If I do
PROC MEANS NOPRINT;
VAR AMOUNT AVG1 AVG2;
BY OBJNAME;
OUTPUT OUT=WORK.SUMM1
SUM(AMOUNT) = AMOUNT
SUM(AVG1 AVG2) =
AVG1 AVG2 ;
it looks nice but I still need the division, my idea was putting in something like
AVG1= AVG1/AMOUNT
but I didn't find a way how this could work.
Maybe someone van give me a hint how to do this?
data summ1;
set dataset (rename=(
amount=oldamount
avg1=oldavg1
avg2=oldavg2
));
by objname;
if first.objname
then do;
amount = 0;
avg1 = 0;
avg2 = 0;
end;
amount + oldamount;
avg1 + oldavg1;
avg2 + oldavg2;
if last.objname
then do;
avg1 = avg1 / amount;
avg2 = avg2 / amount;
output;
end;
drop oldamount oldavg1 oldavg2;
run;
"Manual" solution.
I will have to check this, as I am not shure wether it will no confuse with my data step.
Unless you make use of the auomatically created _type_ and _freq_ variables, you should get the right output.
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.