g_rshift(G;S;O;X;N)

Returns the value of the row that is a specified number of rows before (or after) the current row within a given group.

Function type

Vector only

Syntax

g_rshift(G;S;O;X;N)
t_rshift(X;N)

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 A column name
N
  • integer
  • big integer
The number of rows to shift within the group
Note: Support for columns of type big integer available as of version 11.26.

Return Value

For every row in each group defined by G and ordered by O (and for those rows where S=1, if specified):
  • If N >= 0, g_rshift returns the value of X for the row that is N rows after this row in the same group as this row.
  • If N < 0, g_rshift returns the value of X for the row that is |N| rows before this row in the same group as this row.

The result is the same data type as X.

Note: N/As in X are treated like any other value; i.e. they are shifted.

If no rows in a group have valid (non-N/A) values for X, the result for every row of the group is N/A.

Sample Usage

<base table="pub.doc.samples.ref.func.g_func_time_series_sample_usage"/>
<willbe name="g_rshift_1" value="g_rshift(state;include;order;value;1)"/>
<willbe name="g_rshift_2" value="g_rshift(state city;include;order;value;1)"/>

Example: Shifting within groups

This example shows how to perform a row shift using g_rshift(G;S;O;X;N) across multiple groups. The shift occurs for each zip code in the zipcode column. For simplicity, the table is filtered down to only two zip codes.

<base table="pub.doc.weather.wunderground.observed_daily"/>
<sel value="between(date;20160601;20160731)"/>
<sel value="zipcode=01001 55957"/>
<sort cols="zipcode,date"/>
<colord cols="zipcode,date,meantempi"/>
<willbe name="later_dates" value="g_rshift(zipcode;;;date;30)"/>
<willbe name="later_dates_temp" value="g_rshift(zipcode;;;meantempi;30)"/>
<willbe name="day_over_day_mean_temps" value="later_dates_temp-meantempi"/>

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.