2017-05-27 14 views
-1

毎年ゼロ日が特定の日であるいくつかの期間があります。期間の開始日と終了日の間に前後のすべての日付のリストを、関連する日番号と共に作成する必要があります。ここでSASの2つの日付間の日数を提供する方法

は一例です: 開始日(08APR2016) デイ・ゼロ(01May2016) 終了日(04Aug2016)

リストは次のようになります。

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

私はわからないんだけどこれを行うために必要なSASコードの書き方や援助をいただければ幸いです。

私は現在、Nのid変数を作成して開始日から終了日までカウントしています。各リストについて、正しい数字を追加して、ゼロにしたい日付にします。したがって、上記の例では、最初のものについてはN -38を実行し、そこからカウントアップします。

しかし、それは複数のリストのためにそれを行うときに乱雑になり、私は特定の日をゼロにして最初の日に戻って数え、最後の日に転送する素早い方法があることを望んでいました。

+0

SOルールを満たすには、試したことを投稿する必要があります。 SASの日付は整数(Googleのもの)なので、通常の数字として増減することができ、論理は正しいでしょう。開始日と終了日がある場合は、ゼロデイを無視して最初から最後までループし、ゼロ日のみを使用して差を計算します。日付は差分を計算するための整数なので、日付を直接減算することができます。 – 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; 
関連する問題