2017-05-27 39 views
-1

我每年有几个时间段,其中第零天是特定日期。我需要创建一个列表,列出在期间开始和结束之间前后的所有日期及其相关的日期编号。如何提供SAS中两个日期之间的天数

下面是一个例子: 开始日期(08APR2016) 零日(01May2016) 结束日期(04Aug2016)

名单应该是这样的:

Day Date 
-37 08APR2016 
-36 09APR2016 
. 
. 
0 01MAY2016 
1 02May2016 
. 
. 
94 04AUG2016 

我不知道如何编写必要的SAS代码来做到这一点和任何援助将不胜感激。

我目前正在通过创建一个id变量N来计算从开始日期到结束日期。然后为每个清单添加正确的数字以使我想要的日期为零。所以在上面的例子中,我会为第一个做N -38,然后从那里算起。

但是,当它做多个列表时,它会变得混乱,我希望有一个快速的方法来使某一天为零,然后倒数第一天,并转发到最后一天。

+0

要符合SO规则,您需要发布您尝试过的内容。 SAS日期是整数(谷歌它),所以你可以增加/计数他们为常规数字和逻辑将是正确的。如果您有开始和结束,请忽略从开始到结束的零日和循环,并且仅使用零日来计算差异。由于日期是计算差异的整数,因此可以直接减去日期。 – Reeza

回答

0

你问的是非常简单的。你应该尝试一些东西,看看有什么可行的,什么不可行。

data want; 
retain day date; 
keep day date; 
format date date9.; 

startDate = '08APR2016'd; 
endDate = '04AUG2016'd; 
zeroDate = '01MAY2016'd; 

do i = startDate to endDate; 
    day = i - zeroDate; 
    date = i; 
    output; 
end; 
run; 
相关问题