Hi...I am trying to obtain each Season that is between two dates (STD & ENDT). The problem I am having is I want to have the Spring Season end on June 15 rather than June 30. I have tried the following:
end_subperiod=intnx('year.7',start_subperiod,0,'end',-15)
but that didn't work. Any suggestions.Thanks.
data Have;
infile datalines dsd truncover;
input STD:yymmdd10. ENDT:yymmdd10.;
format std endt yymmdd10.;
datalines4;
2016-06-02,2016-09-24
2016-06-15,2016-09-26
2016-06-19,2016-09-30
;;;;
data want;
set have;
format start_subperiod end_subperiod yymmddn8.;
array month_to_season_map {12} $6 _temporary_
('Winter','Winter','Winter'
,'Spring','Spring','Spring'
,'Summer','Summer'
,'Fall','Fall','Fall','Fall');
seasonstart=month_to_season_map{month(std)};
seasonend=month_to_season_map{month(endt)};
start_subperiod=std;
do while (start_subperiod<=endt);
select(month(start_subperiod)); /* Align end_subperiod */
when (9,10,11,12) end_subperiod=intnx('year.1',start_subperiod,0,'end');
when (1,2,3) end_subperiod=intnx('year.4',start_subperiod,0,'end');
when (4,5,6) end_subperiod=intnx('year.7',start_subperiod,0,'end');
when (7,8) end_subperiod=intnx('year.9',start_subperiod,0,'end');
end;
end_subperiod=min(end_subperiod,endt);
season=month_to_season_map{month(end_subperiod)};
output;
start_subperiod=end_subperiod+1;
end;
run;
Result:
STD
ENDT
start_subperiod
end_subperiod
seasonstart
seasonend
season
2016-06-02
2016-09-24
20160602
20160630
Spring
Fall
Spring
2016-06-02
2016-09-24
20160701
20160831
Spring
Fall
Summer
2016-06-02
2016-09-24
20160901
20160924
Spring
Fall
Fall
2016-06-15
2016-09-26
20160615
20160630
Spring
Fall
Spring
2016-06-15
2016-09-26
20160701
20160831
Spring
Fall
Summer
2016-06-15
2016-09-26
20160901
20160926
Spring
Fall
Fall
2016-06-19
2016-09-30
20160619
20160630
Spring
Fall
Spring
2016-06-19
2016-09-30
20160701
20160831
Spring
Fall
Summer
2016-06-19
2016-09-30
20160901
20160930
Spring
Fall
Fall
Want:
STD
ENDT
start_subperiod
end_subperiod
seasonstart
seasonend
season
2016-06-02
2016-09-24
20160602
20160615
Spring
Fall
Spring
2016-06-02
2016-09-24
20160616
20160831
Spring
Fall
Summer
2016-06-02
2016-09-24
20160901
20160924
Spring
Fall
Fall
2016-06-15
2016-09-26
20160615
20160615
Spring
Fall
Spring
2016-06-15
2016-09-26
20160616
20160831
Spring
Fall
Summer
2016-06-15
2016-09-26
20160901
20160926
Spring
Fall
Fall
2016-06-19
2016-09-30
20160619
20160831
Summer
Fall
Summer
2016-06-19
2016-09-30
20160901
20160930
Summer
Fall
Fall
... View more