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_dateとend_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 で重複を削除する方法