recode

Purpose

Changes the values of an existing vector from a vector of new values. Used in data transformations.

Format

y = recode(x, e, v)
Parameters:
  • x (Nx1 vector) – data to be recoded (changed)

  • e (NxK matrix) – matrix of 1’s and 0’s

  • v (Kx1 vector) – contains the new values to be assigned to the recoded variable

Returns:

y (Nx1 vector) – contains the recoded values of x.

Examples

x = { 20,
      45,
      32,
      63,
      29 };

// Create 4 column vectors with a 1 where the statement
// evaluates as 'true'
e1 = (20 .lt x) .and (x .le 30);
e2 = (30 .lt x) .and (x .le 40);
e3 = (40 .lt x) .and (x .le 50);
e4 = (50 .lt x) .and (x .le 60);

// Horizontally concatenate the column vectors into a 5x4
// matrix
e = e1~e2~e3~e4;

v = { 1.2,
      2.4,
      3.1,
      4.6 };

// Replace elements of 'x' with elements from 'v' based upon
// the 0's and 1's in 'e'
y = recode(x, e, v);

The above code assigns e and y as follows:

    0   0   0   0
    0   0   1   0
e = 0   1   0   0
    0   0   0   0
    1   0   0   0

// Since the third column of the second row of 'e' is equal
// to 1, the second row of 'y' is set equal to the third
// element of 'v', etc.
    20.000000
    3.1000000
y = 2.4000000
    63.000000
    1.2000000

Remarks

There should be no more than a single 1 in any row of e.

For any given row \(N\) of x and e, if the Kth column of e is 1, the Kth element of v will replace the original element of x.

If every column of e contains a 0, the original value of x will be unchanged.

Source

datatran.src