Suppose the 'Grade' variable has 100 observations. I want to calculate the mean of those 100 observations and save the value as one varaible on the table. I know we could easily get the mean through "proc mean", but that will not save the mean value as a new varaible on the same table.
Thanks in advance.
Here's a SQL option:
proc sql;
create table want as
select *, mean(age) as avg_age
from sashelp.class;
quit;
data have;
input grade;
datalines;
1.4
3.2
3.4
2.1
4.3
5.4
;
proc sql;
select grade,avg(grade) as mean from have;
quit;
OR, after get mean by proc mean , you can do something like this:
proc mean noprint;
......
output out=mean mean=;
run;
data want;
set have;
if _n_ eq 1 then set mean;
run;
Xia Keshan
As an alternative you could loop through your data set yourself and add the mean:
data have;
input grade;
datalines;
1.4
3.2
3.4
2.1
4.3
5.4
;
Run;
Data Want (Drop=Obs i Total);
Do Obs=1 By 1 Until (Eof);
Set Have End=Eof;
Total=Sum(Total,Grade);
End;
Mean=Total/Obs;
Do i=1 To Obs;
Set Have;
Output;
End;
Run;
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 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.