Hi,
I have the following problem:
I would like to calculate the mean per period of the following table :
I would like to get a table like this :
Thank you for your help
You can create the date_semester variable and calculate mean by it:
data temp;
set have;
length semstr $7;
mon = put(date,yymmn6.);
if '200507' le mon le '200512' then semstr = '2005_s2'; else
if '200601' le mon le '200606' then semstr = '2006_s1'; else
if '200606' le mon le '200612' then semstr = '2006_s2';
run;
proc means data=temp;
class semstr;
var score_value;
output out=want mean=;
run;
How are these periods defined? Why is june included in the last half year period in the first group but not in the last?
If you have a clear pattern of how your groups are defined, you can use PROC TIMESERIES.
Otherwise, use a data step to group the periods and use PROC MEANS.
You can create the date_semester variable and calculate mean by it:
data temp;
set have;
length semstr $7;
mon = put(date,yymmn6.);
if '200507' le mon le '200512' then semstr = '2005_s2'; else
if '200601' le mon le '200606' then semstr = '2006_s1'; else
if '200606' le mon le '200612' then semstr = '2006_s2';
run;
proc means data=temp;
class semstr;
var score_value;
output out=want mean=;
run;
Use INTNX() to make a group variable then PROC SUMMARY.
data have;
input date : date9. value;
format date date9.;
cards;
05jun2017 21
12nov2017 43
21feb2016 32
21mar2017 3
;
run;
data have;
set have;
group=intnx('semiyear',date,0);
format group date9.;
run;
proc summary data=have nway;
class group;
var value;
output out=want mean=;
run;
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!
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.