2015-10-17

Substraer a cada valor de una fila la mediana de su respectiva fila en R

Title

Problema

Queremos substraer a cada valor de una fila la mediana de la fila.

Datos

Creamos una matriz de 5x10.

set.seed(24)
m1 <- matrix(sample(0:9, 10*5, replace=TRUE), ncol=5)
      [,1] [,2] [,3] [,4] [,5]
 [1,]    2    6    0    3    4
 [2,]    2    3    5    2    3
 [3,]    7    6    7    3    2
 [4,]    5    6    1    1    2
 [5,]    6    3    2    9    0
 [6,]    9    9    6    2    0
 [7,]    2    1    0    7    3
 [8,]    7    0    5    6    3
 [9,]    8    5    6    6    2
[10,]    2    1    0    9    3

Solución

m1 - apply(m1, 1, median)
      [,1] [,2] [,3] [,4] [,5]
 [1,]   -1    3   -3    0    1
 [2,]   -1    0    2   -1    0
 [3,]    1    0    1   -3   -4
 [4,]    3    4   -1   -1    0
 [5,]    3    0   -1    6   -3
 [6,]    3    3    0   -4   -6
 [7,]    0   -1   -2    5    1
 [8,]    2   -5    0    1   -2
 [9,]    2   -1    0    0   -4
[10,]    0   -1   -2    7    1
Si queremos conocer la mediana de cada fila.

apply(m1, 1, median)
[1] 3 3 6 2 3 6 2 5 6 2

Notas

Empleamos la función apply para aplicar una función a cada fila, en este caso la función median (mediana). En el segundo argumento de la función 1 indica que la función será aplicada sobre las filas (fila a fila). Las funciones apply son muy útiles en R pues evitan el uso de bucles (loops), pudiendo aplicar funciones a los márgenes, filas o columnas, de una matriz.

Entradas relacionadas

Referencias

No hay comentarios:

Publicar un comentario

Nube de datos