between

Purpose

Returns a binary matrix with a 1 if the corresponding element of X is between ‘a’ and ‘b’, with an option to specify whether the ends are inclusive.

Format

mask = between(X, left, right[, inclusive])
Parameters:
  • x (NxK matrix or dataframe.) – Data.

  • left (1x1 matrix or dataframe.) – Lower limit of the range.

  • right (1x1 matrix or dataframe.) – Upper limit of the range.

  • inclusive (string) –

    Optional argument, specifies which limits are included in range. Default = "both". Options are:

    ”left”

    Include lower limit only.

    ”right”

    Include upper limit only.

    ”neither”

    Do not include either limit.

    ”both”

    Include both limits.

Returns:

mask (NxK matrix) – Equal to 1 if the corresponding element of X is in the specified range, otherwise a 0.

Examples

Example 1: Select dates in a range

// Create file name with full path and load data
fname = getGAUSSHome("examples/beef_prices.csv");
beef = loadd(fname);

beef = beef[1:5,.];
print beef;
  date    beef_price
199201        116.64
199202        114.49
199203        111.11
199204        108.17
199205        107.76
mask = between(beef[.,"date"], "1992-02", "1992-04");

By default, both endpoints are counted as a match.

mask = 0
       1
       1
       1
       0

You can, however, specify if you would like the endpoints treated differently.

// Set the final optional input, 'inclusive' to include only the right endpoint
mask_inc_right = between(beef[.,"date"], "1992-02", "1992-04", "right");
mask_inc_right = 0
                 0
                 1
                 1
                 0

between() can be used with selif() to filter data.

// Select rows of the data "if" the mask value is non-zero
beef_trim = selif(beef, mask);
print beef_trim;
  date    beef_price
199202        114.49
199203        111.11
199204        108.17

Example 2: Multiple column use

x  = { 100 200 300,
       40  50  60,
       7   8   9 };

left = 25;

right = 125;

between(x, left, right);

The above code prints the following matrix to screen:

1.0000000        0.0000000        0.0000000
1.0000000        1.0000000        1.0000000
0.0000000        0.0000000        0.0000000

See also

Functions recode(), counts(), reclassify()