如果我有两个约会,例如我要在22MAR2005到01MAR2006之间创建一个季节间隔(春季,夏季,秋季,冬季),请问如何在数据步骤中完成此操作?
季节的定义为: 春季:3月至5月 夏季:6月至8月 秋季:9月至11月 冬季:12月至2月
我需要计算他们每个赛季花了多长时间。
答案 0 :(得分:0)
您需要先将其转换为MONTH,然后再转换为SEASON。最近有人问了这个确切的问题,因此通过搜索可以相对容易地找到它(我假设某些课程将其用作作业吗?)。
data want;
set have;
*create month;
month_date = month(date);
*assign to season;
if month_date in (6, 7, 8) then season = 'Summer';
else if month_date in (9, 10, 11) then season ='Fall';
....etc;
run;
您也可以使用一种格式,但是由于您刚开始使用它,这可能会更容易。
其他用户的问题似乎真的很相似: https://communities.sas.com/t5/SAS-Enterprise-Guide/proc-glm/m-p/492142
编辑:使用INTCK()计算间隔数。 然后使用INTNX来增加间隔并计算您的天数。 可以使用INTNX()函数的第一个参数控制日期的对齐方式。您可以查看文档以了解确切的细节。
data want;
start_date="22Mar2005"d;
end_date="01Mar2006"d;
num_intervals=intck('quarter', start_date, end_date, 'C') ;
do interval=0 to num_intervals;
season_start=intnx('Month3.3', start_date, interval, 'b');
season_end=intnx('Month3.3', start_date, interval, 'e');
Number_Days=season_end - season_start + 1;
output;
end;
format start_date end_date season: yymmddd10.;
run;