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;
Available on demand!
Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.
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.