Normalize os Valores na Matriz R
- 
          
            Use a função sweeppara varrer matrizes em R
- 
          
            Use a função scalepara normalizar 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
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