rowcontains#

Purpose#

Checks whether any element in the row of a matrix or string array matches any element from a separate symbol.

Format#

mask = rowcontains(haystack, needles)#
Parameters:
  • haystack (matrix) – multi-dimensional array or string array in which to search.

  • needles (vector or string array) – the elements to search for in haystack.

Returns:

mask (vector) – with the same number of rows as the input haystack, containing only 1’s and 0’s. Each element of the output, mask, will contain a 1 if any element in the corresponding row of haystack matches any element in needles.

Examples#

Find observations matching one or more criteria#

// A string array with categorical variables
string haystack = { "married" "unemployed"      "king",
                    "single" "unemployed" "snohomish",
                    "single"   "employed"      "king",
                   "married"   "employed"      "king",
                    "single"   "employed"    "pierce" };

needles = "single" $| "unemployed";

// Find any observations in which the participant
// is either single or unemployed
mask = rowcontains(haystack, needles);

After the above code, mask will equal:

1
1
1
0
1

Find rows with specified invalid values#

data = { 26 121 4,
        999 139 2,
         45 145 2,
         51   . 3 };

// Search for 999 or a GAUSS missing value '.'
bad_vals = 999 | miss(0,0);

// Search 'names' for instances of any of
// the strings in 'missing'
mask = rowcontains(data, bad_vals);

After the code above, mask will equal:

0
1
0
1

Remarks#

rowcontains() is similar to the dot operators .== and .$==. The differences are that rowcontains() allows for the comparison of more than one needle in each element of the haystack and rowcontains() reports one value for each row in haystack, rather than one value for each element in haystack.

To return a mask of ones and zeros the same size as haystack, use ismiss().

See also

Functions indexcat(), indnv(), ismember(), contains()