setdif

Purpose

Returns the unique elements in one vector that are not present in a second vector.

Format

y = setdif(v1, v2[, typ])
Parameters:
  • v1 (Nx1 vector) – data
  • v2 (Mx1 vector) – data
  • typ (scalar) –

    Optional input, type of data.

    0 character, case sensitive.
    1 numeric (Default).
    2 character, case insensitive.
Returns:

y (Lx1 vector) – containing all unique values that are in v1 and are not in v2, sorted in ascending order.

Examples

Basic example

// Create a vector of years
y1 = { 1980,
       1984,
       1988,
       1992,
       1996,
       2000,
       2004,
       2008,
       2012,
       2016 };

y2 = { 1980,
       1988,
       1992,
       2000,
       2008,
       2016 };

// Set 'y_diff' equal to years in 'y1' and NOT in 'y2'
y_diff = setdif(y1, y2);

After the code above, y_diff will be equal to:

1984
1996
2004
2012

Character data

// Create 2 vectors of character data using the
// numeric concatenation operator
sp500 = "aapl" | "goog" | "msft" | "xom" | "wfc" | "jnj";
nasdaq = "aapl" | "msft" | "amzn" | "goog" | "fb" | "gild";

// Set type to 'character, case insensitive'
typ = 2;

// Find characters in sp500 and NOT in nasdaq
sp_only = setdif(sp500, nasdaq, 2);

// NOTE: The $ in front of the variable name tell
// GAUSS to print the variable as character data
print $sp_only;

The code above will produce the following output:

jnj
wfc
xom

Remarks

Place smaller vector first for fastest operation.

When there are a lot of duplicates, it is faster to remove them first with unique() before calling this function.

Source

setdif.src

See also

Functions setdifsa(), union()