miss, missrv

Purpose

miss() converts specified elements in a matrix to GAUSS’s missing value code. missrv() is the reverse of this, and converts missing values into specified values.

Format

y = missrv(x, v)
y = miss(x, v)
Parameters:
  • x (NxK matrix) – data
  • v (LxM matrix) – ExE conformable with x.
Returns:

y (max(N,L) by max(K,M) matrix) – matrix with missing values either replaced or added.

Examples

Replace missing values

// Create a 4x3 matrix with missing values
x = { 1  .  3,
      .  5  .,
      7  8  .,
      . 10 11 };

// Replace all missing values with 0.
x_2 = missrv(x, 0);


// Create a 1x3 row vector.
replace = { -1 -2 -3 };

// Replace missing values with the element
// in the corresponding column of 'replace'
x_3 = missrv(x, replace);

After the code above:

        1    0    3
x_2 =   0    5    0
        7    8    0
        0   10   11

        1   -2    3
x_3 =  -1    5   -3
        7    8   -3
       -1   10   11

Replace specific numbers with missing values

// Create a 4x3 matrix
x = { 1  2  3,
      4  5  6,
      7  8  4,
      4 10 11 };

// Replace all instances of 4 with a missing value.
x_2 = miss(x, 4);


// Create a 1x3 row vector.
replace = { 4 5 6 };

// Replace all instances of 4 in the first column,
// 5 in the second column and 6 in the third with a missing.
x_3 = miss(x, replace);

After the code above:

        1    2    3
x_2 =   .    5    6
        7    8    .
        .   10   11

        1    2    3
x_3 =   .    .    .
        7    8    4
        .   10   11

Example 3

// Create a 3x3 matrix with each element equal to 1
x = ones(3, 3);

// Assign the diagonal of 'x' to be equal to pi
x = diagrv(x, pi);

print "x = " x;

// Change all 1's in 'x' into missing values and assign to
// xmiss
xmiss = miss(x, 1);

print "xmiss = " xmiss;

// Change all missings in 'xmiss' into 2*pi and assign to x2
x2 = missrv(xmiss, 2*pi);

print "x2 = " x2;

The code above, will return:

x =
       3.1415927        1.0000000        1.0000000
       1.0000000        3.1415927        1.0000000
       1.0000000        1.0000000        3.1415927
xmiss =
       3.1415927                .                .
               .        3.1415927                .
               .                .        3.1415927
x2 =
       3.1415927        6.2831853        6.2831853
       6.2831853        3.1415927        6.2831853
       6.2831853        6.2831853        3.1415927

Remarks

For miss(), elements in x that are equal to the corresponding elements in v will be replaced with the GAUSS missing value code.

For missrv(), elements in x that are equal to the GAUSS missing value code will be replaced with the corresponding element of v.

For complex matrices, the missing value code is defined as a missing value entry in the real part of the matrix. For complex x, then, miss() replaces elements with a “. + 0i” value, and missrv() examines only the real part of x for missing values. If, for example, an element of \(x = 1 + .i\), missrv() will not replace it.

These functions act like element-by-element operators. If v is a scalar, for instance -1, then all -1’s in x are converted to missing. If v is a row (column) vector with the same number of columns (rows) as x, then each column (row) in x is transformed to missings according to the corresponding element in v. If v is a matrix of the same size as x, then the transformation is done corresponding element by corresponding element.

Missing values are given special treatment in the following functions and operators: \(b/A\) (matrix division when a is not square and neither a nor b is scalar), counts(), scalmiss(), maxc(), maxindc(), minc(), minindc(), miss(), missex(), missrv(), moment(), packr(), scalmiss(), sortc().

As long as you know a matrix contains no missings to begin with, miss() and missrv() can be used to convert one set of numbers into another. For example:

y = missrv(miss(x, 0), 1);

will convert 0’s to 1’s.

To convert a range of values, such as:

\[0.5 < x < 1.3\]

into missing values, use the missex() function.