SAS中的日期和间隔

时间:2018-09-07 16:57:04

标签: sas

如果我有两个约会,例如我要在22MAR2005到01MAR2006之间创建一个季节间隔(春季,夏季,秋季,冬季),请问如何在数据步骤中完成此操作?

季节的定义为:   春季:3月至5月   夏季:6月至8月   秋季:9月至11月   冬季:12月至2月

我需要计算他们每个赛季花了多长时间。

1 个答案:

答案 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;