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;
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.