前のページ|次のページ

INTINDEX関数

季節インデックスを返します。この関数には、日付、時間または日時の間隔と値を指定します。

カテゴリ: 日付と時間

構文

必須引数

interval

WEEK、MONTHまたはQTRなどの間隔名が含まれる文字定数、変数または式を指定します。Intervalは、大文字または小文字で表示できます。intervalに使用可能な値のリストについては、Intervals Used with Date and Time Functions (SAS言語リファレンス: 解説編)を参照してください。

ヒント
intervalが文字定数の場合、値を引用符で囲みます。
ヒント
intervalに有効な値は、date-valueが日付、時間、日時の値のいずれであるかによって異なります。詳細については、よく使用される時間間隔を参照してください。
より複雑な間隔を指定するには、基本間隔名に乗数とシフトインデックスを組み合わせて使用できます。間隔名の一般的な形式を次に示します。

interval<multiple.shift-index>

間隔名の3つの部分は次のとおりです。

interval

基本間隔の種類の名前を指定します。たとえば、YEARで年間隔を指定します。

multiple

乗数を指定します(省略可能)。基本タイプの間隔の期間に対する倍数と同等の間隔を設定します。たとえば、間隔YEAR2は2年の期間の間隔、つまり隔年です。

参照項目 乗数とシフト間隔を使用した日時の増分 詳細については、を参照してください。

shift-index

シフトインデックスを指定します(省略可能)。間隔の開始時点を指定したサブ期間にシフトします。たとえば、YEAR.3で、各カレンダ年の3月1日に開始して翌年の2月末に終了するようにシフトされた年間隔を指定します。

制限事項 シフトインデックスは、間隔全体のサブ期間の数以下にする必要があります。たとえば、2年間隔では25番目の月は存在しないため、YEAR2.24は使用できますがYEAR2.25はエラーになります。
デフォルトのシフト期間が間隔の種類と同じ場合、複数期間の間隔のみを任意のシフトインデックスでシフトできます。たとえば、MONTHの種類の間隔はデフォルトではMONTHのサブ期間でシフトされるため、シフトインデックスで月間隔をシフトできません。ただし、各MONTH2間隔には2つのMONTH間隔が含まれるため、シフトインデックスで2か月間隔をシフトできます。たとえば、間隔名MONTH2.2では、偶数月の1日目に開始する2か月の期間が指定されます。
参照項目 乗数とシフト間隔を使用した日時の増分 詳細については、を参照してください。

date-value

指定した間隔の期間を表す日付、時間または日時の値を指定します。

オプション引数

seasonality

数値または周期を指定します。

この引数では、日付と時間の周期をより柔軟に操作できます。1年間の季節性を52週にするか53週にするかを指定できます。
この例では、次の関数は同じ結果になります。
INTINDEX('MONTH', date, 3);
INTINDEX('MONTH', date, 'QTR');
seasonalityは最初の例では数値(月数)で、2番目の例のseasonalityは周期(QTR)です。

詳細

INTINDEX関数の間隔

INTINDEX関数は、季節インデックスを返します。この関数には、間隔と適切な日付、時間または日時の値を指定します。季節インデックスは、指定した間隔の季節周期での日付、時間または日時の値の位置を表す数値です。
1年周期には12か月があり12月はその年の12番目の月であるため、この例では12の値が返されます。
intindex('month', '01DEC2012'd);
次の例では、両方のステートメントが2013年第1四半期内の日付を含むため、INTINDEXは同じ値(1)を返します。
intindex('qtr', '01JAN2013'd);
intindex('qtr', '31MAR2013'd);
次の例では、日単位のデータは週単位の周期に含まれ、2012年12月7日は金曜日で6番目の曜日なので、6の値を返します。
intindex('day', '07DEC2012'd);

IntervalDate-Time-Valueの関係

季節インデックスを正しく識別するには、間隔が日付、時間または日時の値に適合する必要があります。たとえば、intindex('month', '01DEC2012'd);では、1年の間隔には12か月があり12月はその年の12番目の月であるため、12の値を返します。MONTH間隔にはSAS日付値が必要です。週間隔には7日あり、2012年12月7日は金曜日で6番目の曜日なので、次の例では6の値が返されます。
intindex('day', '07DEC2012'd);
DAY間隔にはSAS日付値が必要です。
この例では、QTR間隔が日時値でなくSAS日付値を日付に必要とするため、欠損値が返されます。
intindex('qtr', '01JAN2013:00:00:00'dt);
この例では、12の値が返されます。DTMONTH間隔には日時値が必要です。
intindex('dtmonth', '01DEC2013:00:00:00'dt);
日付間隔と時間間隔の操作の詳細については、日付間隔と時間間隔を参照してください。

販売カレンダの間隔

INTINDEX関数は、小売業界によるカレンダの間隔でも使用できます。これらの間隔はISO 8601に準拠します。詳細については、販売カレンダの間隔:ISO 8601準拠を参照してください。

季節性

季節性は、年内の異なる間隔での周期的変動を測定する時系列の概念です。季節性の指定では、季節が最も一般的な変動ソースです。たとえば、家庭暖房用の灯油は、一般的に他の季節よりも冬の売り上げの方が高くなります。多くの場合、日単位の時系列では曜日による定期的な変動(週末のレジャーで支出が増えるなど)が発生します。INTINDEX関数は、季節性の概念を使用して季節インデックスを返します。この関数には、日付、時間または日時の間隔と値を指定します。季節性とPROC FORECASTでの予測手法の使用方法の詳細については、SAS/ETS User's Guideを参照してください。

比較

INTINDEX関数は季節インデックスを返しますが、INTCINDEX関数は周期インデックスを返します。
次の例では、2013年4月4日は木曜日で週の5番目の曜日なので、INTINDEX関数は5の値を返します。
index=intindex('day', '04APR2013'd);
同じ日を使用しても、2013年4月4日は年の14番目の週なので、INTCINDEX関数は14の値を返します。
cycle_index=intcindex('day', '04APR2013'd);
この例では、INTINDEX関数は分を返します。
index = intindex('minute', '01Sep2012:06:05:04'dt);
同じ日付と時間を使用しても、INTCINDEX関数は時刻を返します。
cycle_index = intcindex('minute', '01Sep2012:06:05:04'dt);
intseas('interval');では、INTSEASはintindex('interval', date);によって返される最大数を返します。

例1: INTINDEXに2つの引数を使用した例

SASステートメントとその結果を次に示します。
SASステートメント
結果
interval1=intindex('qtr', '14AUG2013'd);
put interval1;
3
interval2=intindex('dtqtr', '23DEC2013:15:09:19'dt);
put interval2;
4
interval3=intindex('hour', '09:05:15't);
put interval3;
10
interval4=intindex('month', '26FEB2013'd);
put interval4;
2
interval5=intindex('dtmonth', '28MAY2013:05:15:00'dt);
put interval5;
5
interval6=intindex('week', '09SEP2013'd);
put interval6;
37
interval7=intindex('tenday', '16APR2013'd);
put interval7;
11

例2: 季節性の例

SASでは、デフォルトの季節周期を使用します。たとえば、月単位のデータは年単位の季節とみなされます。ただし、月単位のデータを半年単位の季節周期とすることもできます。この例では、デフォルトを使用するかわりに3番目の引数seasonalityを使用して、季節性を指定します。うるう年の処理方法も示しています。
data weekly;
     *do year=2007 to 2012;
     year=2004;
        NewYear=holiday('NEWYEAR', year);
        do i=-5 to 5; 
           date=intnx('week', NewYear, i);
           output;
        end;
     *end;
     format date date.;
			format NewYear date.;
run;

/* The standard leap week is the first week of year. */
/* An alternative method uses a third argument:leap week is week 53. */
title "Using a Third Argument to Control Weekly Seasonality";
data LeapWeekExample;
     set weekly;
     StandardIndex=intindex('week', date);
     IndexWithLeap=intindex('week', date, 53);
run;
proc print;
run;

/* Using a number and an interval can be equivalent for the third argument. */
title "Using the Third Argument as a Number or Cycle";
data Equiv3rdArg;    
     set sashelp.air(obs=12);
     defaultSeasonal=intindex('MONTH', date);
     SeasonalArg12=intindex('MONTH', date, 12);
     SeasonalArgYear=intindex('MONTH', date, 'YEAR');
     format date date.;
run;
proc print;
run;


/* Use the third argument for non-standard seasonality. */
title "Using the Third Argument for Non-Standard Seasonality";
data NonStandardSeasonal;
     set sashelp.air(obs=24);
     /* Standard Index - MONTH is Yearly Seasonal */
     StandardIndex=intindex('MONTH', date);
     SemiYrIndex=intindex('MONTH', date, 'SEMIYR');
     Index6=intindex('MONTH', date, 6);
     format date date.;
run;

proc print;
run;
季節性の例からの出力
季節性の例からの出力
季節性の例からの出力
季節性の例からの出力

関連項目:

その他のリファレンス:
SAS/ETS User's Guide
前のページ|次のページ|ページの先頭へ