how to calculate a mean per semester

Accepted Solution Solved
Reply
Contributor
Posts: 22
Accepted Solution

how to calculate a mean per semester

Hi,

 

I have the following problem:

 

I would like to calculate the mean per period of the following table :

test.PNG

I would like to get a table like this :

date.PNG Thank you for your help


Accepted Solutions
Solution
‎11-13-2017 07:59 AM
Trusted Advisor
Posts: 1,683

Re: how to calculate a mean per semester

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;

View solution in original post


All Replies
PROC Star
Posts: 1,071

Re: how to calculate a mean per semester

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.

Solution
‎11-13-2017 07:59 AM
Trusted Advisor
Posts: 1,683

Re: how to calculate a mean per semester

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;
Super User
Posts: 10,313

Re: how to calculate a mean per semester

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;
☑ This topic is solved.

Need further help from the community? Please ask a new question.

Discussion stats
  • 3 replies
  • 98 views
  • 4 likes
  • 4 in conversation