g_movprod(G;S;O;X;W;P)

Returns the product of valid (non-N/A) values in a moving window within a given group.

Function type

Vector only

Syntax

g_movprod(G;S;O;X;W;P)
t_movprod(X;W;P)

Input

Argument Type Description
G any A space- or comma-separated list of column names

Rows are in the same group if their values for all of the columns listed in G are the same.

If G is omitted, all rows are considered to be in the same group.

If any of the columns listed in G contain N/A, the N/A value is considered a valid grouping value.

S integer The name of a column in which every row evaluates to a 1 or 0, which determines whether or not that row is selected to be included in the calculation

If S is omitted, all rows will be considered by the function (subject to any prior row selections).

If any of the values in S are neither 1 nor 0, an error is returned.

O integer A space- or comma-separated list of column names that determine the row order within a particular group

If O is omitted, the order is the current display order of the table.

If any of the values in O are N/A, an error is returned.

X any numeric type A column name
W integer The width of the moving window (or the name of a column whose values represent the width of the moving window)
Note: W may not be omitted.
P text A string that specifies the position of the moving window with respect to the current row
Valid values are:
  • 'lag' - specifies that the window lags the current row (i.e., the current row is the last row in the window, and the first row in the window is W-1 rows behind the current row)
  • 'lead' - specifies that the window leads the current row (i.e., the current row is the first row in the window, and the last row in the window is W-1 rows ahead of the current row)
  • 'center' - specifies that the window is centered around the current row (i.e., if W is an odd number, the window includes the (W-1)/2 rows behind the current row, the current row, and the (W-1)/2 rows ahead of the current row)
    Note: If P is 'center' and W is an even number, W is rounded down to the nearest odd number.

Return Value

For every row in each group defined by G and ordered by O (and for those rows where S=1, if specified), g_movprod returns a decimal value equal to the product of valid (non-N/A) values in X that are in the same moving window and group as this row.

The window in which values are multiplied has width W, and its position with respect to the current row is determined by P.

Note: If the window extends beyond the beginning or end of the group, then only that part of the window that is within the group is considered.

Sample Usage

<base table="pub.doc.samples.ref.func.g_func_time_series_sample_usage"/>
<willbe name="g_movprod_1" value="g_movprod(state;include;order;value;3;'lag')"/>
<willbe name="g_movprod_2" value="g_movprod(state city;include;order;value;2;'lag')"/>

In the image above, one of the returned values contains many digits after the decimal. The system hides this long decimal number and displays a greater than symbol (>). Display formatting can be used to change the number of decimal places that the system shows. Adding format="dec:0" to g_movprod_1 results in the following:

<base table="pub.doc.samples.ref.func.g_func_time_series_sample_usage"/>
<willbe name="g_movprod_1" value="g_movprod(state;include;order;value;3;'lag')" format="dec:0"/>
<willbe name="g_movprod_2" value="g_movprod(state city;include;order;value;2;'lag')"/>

For more information, see Display formats.

Additional Information

  • The t_ version of this function defaults the G argument and omits the S argument. The default for G is set at table load time based on the organization of the table.