Sas で 2 つの日付の差を計算する方法


SAS のINTCK関数を使用すると、SAS の 2 つの日付の差をすばやく計算できます。

この関数は次の基本構文を使用します。

INTCK (間隔、開始日、終了データ、メソッド)

金:

  • 間隔: 計算する間隔 (日、週、月、年など)
  • 開始日: 開始日
  • 終了日: 終了日
  • メソッド: 完全な間隔をカウントするかどうか (‘D’ = いいえ (デフォルト)、’C’ = はい)

次の例は、この関数を実際に使用する方法を示しています。

例: SAS の日付間の差異を計算する

SAS に 2 つの日付変数を含む次のデータセットがあるとします。

 /*create dataset*/
data original_data;
    format start_date end_date date9. ;
    input start_date: date9. end_date: date9. ;
    datalines ;
01JAN2022 09JAN2022
01FEB2022 22FEB2022 
14MAR2022 04APR2022
01MAY2022 14AUG2022
;
run ;

/*view dataset*/
proc print data = original_data; 

次のコードを使用して、 start_date変数とend_date変数の値の差を日、週、月単位で計算できます。

 /*create new dataset*/
data new_data;
    set original_data;
    days_diff = intck (' day ', start_date, end_date);
    weeks_diff = intck (' weeks ', start_date, end_date);
    months_diff = intck (' months ', start_date, end_date);
run ;

/*view new dataset*/
proc print data =new_data; 

3 つの新しい変数は、 start_dateend_dateの差を日、週、月で示します。

INTCK 関数で ‘ c ‘ 引数を使用すると、丸日、週、月単位での差のみを計算できることに注意してください。

 /*create new dataset*/
data new_data;
    set original_data;
    days_diff = intck (' day ', start_date, end_date, ' c ');
    weeks_diff = intck (' weeks ', start_date, end_date, ' c ');
    months_diff = intck (' months ', start_date, end_date, ' c ');
run ;

/*view new dataset*/
proc print data =new_data; 

この表と前の表の違いに注目してください。

この表では、1 月 1 日と 1 月 9 日の間の週数の差は、これらの日付の間に丸 1 週間しか収まらないため、 1として計算されます。

ただし、前の表では、これら 2 つの日付の間に部分的な週が2 つあったため、週数の差は 2で計算されました。

追加リソース

次のチュートリアルでは、SAS で他の一般的なタスクを実行する方法について説明します。

SAS でデータを正規化する方法
SAS で文字列内の文字を置換する方法
SAS で欠損値をゼロに置き換える方法
SAS で重複を削除する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です