INTINDEX Function
Returns the seasonal index when a date, time, or datetime interval and value are specified.
| Categories: | Date and Time |
| CAS |
Syntax
Required Arguments
interval
specifies a character constant, a variable, or an expression that contains an interval name such as WEEK, MONTH, or QTR. Interval can appear in uppercase or lowercase.
interval<multiple.shift-index>
The three parts of the interval name are as follows:
interval
specifies the name of the basic interval type. For example, YEAR specifies yearly intervals.
multiple
specifies an optional multiplier that sets the interval equal to a multiple of the period of the basic interval type. For example, the interval YEAR2 consists of two-year, or biennial, periods.
| See | Incrementing Dates and Times By Using Multipliers and By Shifting Intervals for more information. |
shift-index
specifies an optional shift index that shifts the interval to start at a specified subperiod starting point. For example, YEAR.3 specifies yearly periods shifted to start on the first of March of each calendar year and to end in February of the following year.
| Restrictions | The shift index cannot be greater than the number of subperiods in the whole interval. For example, you could use YEAR2.24, but YEAR2.25 would be an error because there is no 25th month in a two-year interval. |
| If the default shift period is the same as the interval type, then only multiperiod intervals can be shifted with the optional shift index. For example, because MONTH type intervals shift by MONTH subperiods by default, monthly intervals cannot be shifted with the shift index. However, bimonthly intervals can be shifted with the shift index, because there are two MONTH intervals in each MONTH2 interval. For example, the interval name MONTH2.2 specifies bimonthly periods starting on the first day of even-numbered months. | |
| See | Incrementing Dates and Times By Using Multipliers and By Shifting Intervals for more information. |
date-value
specifies a date, time, or datetime value that represents a time period of the given interval.
Optional Argument
seasonality
specifies a number or a cycle.
| Example | In this example, the following functions produce the
same result.INTINDEX('MONTH', date, 3);
INTINDEX('MONTH', date, 'QTR');Seasonality in
the first example is a number (the number of months), and in the second
example seasonality is a cycle
(QTR).
|
Details
INTINDEX Function Intervals
intindex('month', '01DEC2012'd);intindex('qtr', '01JAN2013'd);
intindex('qtr', '31MAR2013'd);intindex('day', '07DEC2012'd);How Interval and Date-Time-Value Are Related
intindex('month', '01DEC2012'd); returns a value of 12 because there are 12 months
in a yearly interval and December is the 12th month of the year. The
MONTH interval requires a SAS date value. The following example returns
a value of 6 because there are seven days in a weekly interval and
December 7, 2012, is a Friday, the sixth day of the week.intindex('day', '07DEC2012'd);intindex('qtr', '01JAN2013:00:00:00'dt);intindex('dtmonth', '01DEC2013:00:00:00'dt);Retail Calendar Intervals
Seasonality
Comparisons
index=intindex('day', '04APR2013'd);cycle_index=intcindex('day', '04APR2013'd);index = intindex('minute', '01Sep2012:06:05:04'dt);cycle_index = intcindex('minute', '01Sep2012:06:05:04'dt);intseas('interval');, INTSEAS returns the maximum number that could be
returned by intindex('interval', date);.
Examples
Example 1: Examples of Using INTINDEX with Two Arguments
|
SAS Statement
|
Result
|
|---|---|
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 |
Example 2: Example of 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;


