packr
==============================================
Purpose
----------------
Deletes the rows of a matrix that contain any missing values.
Format
----------------
.. function:: y = packr(x)
:param x: data
:type x: NxK matrix
:return y: Matrix of *x* containing only those rows
that do not have missing values in any of their elements.
:rtype y: LxK matrix
Examples
----------------
Example 1: Basic example
++++++++++++++++++++++++
::
// Create a 5x3 matrix with missing values
x = { 1 2 3,
4 . 6,
. 8 .,
10 11 12,
. 14 5 };
// Remove all rows which contain a missing value
x_trim = packr(x);
After the code above, *x_trim* will equal:
::
x_trim = 1 2 3
10 11 12
Example 2
+++++++++
::
// Set the rng seed for repeatable random numbers
rndseed 7342692;
// Create a 3x3 matrix of random integers between 1 and 10
x = ceil(rndu(3, 3) * 10);
// Turn all elements with a value of 8 into missing values
x2 = miss(ceil(rndu(3, 3)*10), 8);
// Remove all rows that contain missing values
y = packr(x2);
After the code above:
::
6 10 3 6 10 3
x = 8 7 8 x2 = . 7 . y = 6 10 3
8 6 7 . 6 7
Example 3
+++++++++
::
// Open a GAUSS data file for reading
open fp = mydata;
obs = 0;
sum = 0;
// Continue looping until the end of the file has been
// reached
do until eof(fp);
// Read in 100 lines of the data file and remove any rows
// with missing values
x = packr(readr(fp, 100));
// Check to see if 'packr' returned a missing value; if
// not, update 'obs' and 'sum'
if not scalmiss(x);
obs = obs + rows(x);
sum = sum + sumc(x);
endif;
endo;
mean = sum/obs;
In this example the sums of each column in a data
file are computed as well as a count of the rows
that do not contain any missing values. :func:`packr` is
used to delete rows that contain missings and
:func:`scalmiss` is used to skip the two sum steps if all
the rows are deleted for a particular iteration of
the read loop. Then the sums are divided by the
number of observations to obtain the means.
Remarks
-------
This function is useful for handling missing values by "listwise
deletion," particularly prior to using the ``/`` operator to compute least
squares coefficients.
If all rows of a matrix contain missing values,:func:` packr` returns a scalar
missing value. This can be tested for quickly with the :func:`scalmiss` function.
.. seealso:: Functions :func:`impute`, :func:`scalmiss`, :func:`miss`, :func:`missrv`