【问题标题】:SAS - Creating a week variableSAS - 创建周变量
【发布时间】:2013-11-08 17:00:12
【问题描述】:

我使用的是 SAS 9.3

我需要创建一种按周总计总结的方法,但我不知道该怎么做。所以基本上我有一个日期的年份列表(下面的左列)以及该日期的总数(右列)。我们的一周从星期五到上一个星期四(例如 10 月 17 日星期四到 10 月 25 日星期五)。

我还有一个问题是,如您所见,左侧的日期并不完全是每天,并且并不总是在最后一个星期五日期之前有星期四日期。有没有人知道如何将这些周加起来 - 第 1 周、第 2 周等等……?

感谢您提供的任何帮助

2013-01-01  3

2013-01-02  8

2013-01-03  8

2013-01-04  10

2013-01-06  1

2013-01-07  10

2013-01-08  14

2013-01-09  12

2013-01-10  8

2013-01-11  9

2013-01-12  1

2013-01-14  12

2013-01-15  8

2013-01-16  5

2013-01-17  15

2013-01-18  7

2013-01-20  1

【问题讨论】:

    标签: date sas


    【解决方案1】:

    简单的方法:

    data want;
    set have;
    weekno = ceil((date-'03JAN2013'd)/7);
    run;
    

    IE,减去第一个星期四并除以 7,(所以 1/1-1/3 是 weekno=0)。

    INTCK 函数也擅长计算这个。基本结构是

    weekno=intck('WEEK.5','04JAN2013'd,date); *the second argument is when you want your first week to start;
    

    WEEK 表示计算周数,小数点左侧的# 是多个周组(2 周周期是 WEEK2。),右侧是班次索引(从默认的周日到周六周)。

    您还可以创建一个包含您的周数的格式,然后使用它。

    【讨论】:

    • 感谢您的回复——intck“日期”的第三部分——这是指我的实际日期列(目前称为Activity_date__C)吗? data true_start_5;set true_start_4;WEEK_date=intck('WEEK.5','04JAN2013'd,activity_date__C);run;
    • 是的。 INTCK 比较两个值(args 2 和 3)并表示跨越了多少个(arg 1)类型的边界。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    相关资源
    最近更新 更多