hi guys,
if i want to find the total sum of all the by groups do i create another data set to find it or can i do it within this code below?
so far the code below computes the sum of score2 within each by group.But i also want to find the total sum of score2
Thanks
data a;
input status $ score1 score2;
cards;
medium 23 33
high 33 44
low 12 22
low 11 44
high 10 20
medium 33 66
medium . 44
;
proc sort;by status;
run;
data b;
do until(last.status);
set a;
by status;
sum=sum(sum,score2);
end;
proc print;run;
proc means does it by default...
proc means data=a sum;
ways 0 1;
class status;
output out=summary1 sum(score2)=sum;
run;
Why not add another variable ?
data b;
retain total ;
do until(last.status);
set a;
by status;
sum=sum(sum,score2);
total=sum(total,score2);
end;
Do you want the total for all of the BY groups?
If you want to stick with the DOW theme then add another one that loops over the whole dataset once and retains the value onto the rest of the observations you are generating.
data b;
if _n_=1 then do until (eof);
set a end=eof;
total+score2;
end;
do until(last.status);
set a;
by status;
sum=sum(sum,score2);
end;
run;
Tom,
if i only use the below part of your code :
data b;
if _n_=1 then do until (eof);
set a end=eof;
total+score2;
end;
proc print;run;
i'd get this output:
Obs status score1 score2 total
1 medium . 44 273
2 medium . 44 273
So my question is why do i get the observation twice,why not once only?
This has to do with the way SAS detects the end of a datastep execution. If you only want to scan the whole dataset, use this instead :
data b;
do until (eof);
set a end=eof;
total + score2;
end;
proc print;run;
This note in your log is clue as to what is happening:
NOTE: DATA STEP stopped due to looping.
SAS does not normally stop at the end of the data step. Normally it stops when you read past the end of file with in INPUT or SET/MERGE/UPDATE command. Since it can never read past the end of the file because of IF and DO conditions it runs through the data step twice before it notices on the second time that you did not input anything and stops the step.
Thank you Tom for explaining (again) that feature of the datastep. I can never remember the finer details of how this works... - PG
Thanks Tom and PGStats.Interesting thing.Never knew this capability if data-steps.
Thanks guys!
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.