BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Obsidian | Level 7

## 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 :

I would like to get a table like this :

Thank you for your help

1 ACCEPTED SOLUTION

Accepted Solutions
Garnet | Level 18

## 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;``````
3 REPLIES 3
Tourmaline | Level 20

## 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.

Garnet | Level 18

## 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

## 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;``````
Discussion stats
• 3 replies
• 1357 views
• 4 likes
• 4 in conversation