Normalize os Valores na Matriz R

Jinku Hu 30 janeiro 2023
  1. Use a função sweep para varrer matrizes em R
  2. Use a função scale para normalizar os valores na matriz R
Normalize os Valores na Matriz R

Este artigo irá apresentar como normalizar os valores em um array R.

Use a função sweep para varrer matrizes em R

A função sweep é usada para varrer a estatística de resumo do array. Leva a matriz de entrada como o primeiro argumento e a estatística de resumo como o terceiro argumento. O segundo argumento da função representa o vetor de índices que precisam corresponder aos elementos do terceiro vetor de argumentos. O quarto argumento denota a função que é usada para varrer a matriz. Neste caso, passamos o operador de divisão, que pode ser fornecido com a notação entre aspas - "/". A função retorna a matriz com a mesma forma do array de entrada. Utilizamos a função colSums para calcular as somas das colunas do array de entrada fornecida e passar o resultado como estatística de resumo.

require(stats)

v1 <- c(1.1, 1.2, 4.3, 1.3, 3.9, 2.1, 5.3, 3.8, 7.7, 8.8, 6.7, 2.6)
m1 <- matrix(v1, ncol = 4)

sweep(m1, 2, colSums(m1), FUN = "/")

Resultado:

          [,1]      [,2]      [,3]      [,4]
[1,] 0.1666667 0.1780822 0.3154762 0.4861878
[2,] 0.1818182 0.5342466 0.2261905 0.3701657
[3,] 0.6515152 0.2876712 0.4583333 0.1436464

Observe que, a função sweep também pode com o valor padrão do parâmetro da função. Se o usuário não fornecer explicitamente, a função será considerada o operador de subtração. Lembre-se de que, quando o objeto de função personalizada é passado, ele deve ter dois argumentos. O fragmento de código a seguir subtrai a mediana de cada coluna dos elementos na coluna correspondente do array.

require(stats)

v1 <- c(1.1, 1.2, 4.3, 1.3, 3.9, 2.1, 5.3, 3.8, 7.7, 8.8, 6.7, 2.6)
m1 <- matrix(v1, ncol = 4)

med.att <- apply(m1, 2, median)
sweep(m1, 2, med.att)

Resultado:

     [,1] [,2] [,3] [,4]
[1,] -0.1 -0.8  0.0  2.1
[2,]  0.0  1.8 -1.5  0.0
[3,]  3.1  0.0  2.4 -4.1

Use a função scale para normalizar os valores na matriz R

Outra função útil para a normalização dos dados do array é scale, que divide cada coluna do array de entrada pelo valor correspondente do terceiro argumento denominado - scale. Observe que scale leva o argumento center que é usado para centralizar a coluna (mais detalhes podem ser encontrados nesta página). Nesse caso, atribuímos FALSE ao último argumento, indicando que a centralização da coluna não precisa ser feita. A função colSums é utilizada para calcular as somas de cada coluna do array de entrada e passá-la como o argumento scale.

require(stats)

v1 <- c(1.1, 1.2, 4.3, 1.3, 3.9, 2.1, 5.3, 3.8, 7.7, 8.8, 6.7, 2.6)
m1 <- matrix(v1, ncol = 4)

c1 <- colSums(m1)
scale(m1, center = FALSE, scale = c1)

Resultado:

          [,1]      [,2]      [,3]      [,4]
[1,] 0.1666667 0.1780822 0.3154762 0.4861878
[2,] 0.1818182 0.5342466 0.2261905 0.3701657
[3,] 0.6515152 0.2876712 0.4583333 0.1436464
attr(,"scaled:scale")
[1]  6.6  7.3 16.8 18.1
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artigo relacionado - R Matrix