首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SAS中的日期和间隔

SAS中的日期和间隔
EN

Stack Overflow用户
提问于 2018-09-08 00:57:04
回答 1查看 85关注 0票数 0

如果我有两个日期,例如2005年3月22日到2006年3月01日,我想根据这个时间间隔创建季节间隔(春、夏、秋、冬),如何在一个数据步骤中完成这一点?

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

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

EN

回答 1

Stack Overflow用户

发布于 2018-09-08 01:05:00

您需要先将其转换为月份,然后再转换为季节。这个问题是最近提出的,所以通过搜索可以相对容易地找到它(我猜有些课程正在使用这个作为家庭作业?)。

代码语言:javascript
运行
复制
 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()函数的第一个参数来控制。您可以查看文档以了解确切的细节。

代码语言:javascript
运行
复制
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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52226783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档