¿Cómo estandarizar datos en R? (con ejemplos)

Actualizado el 25 de noviembre de 2022, por Dereck Amesquita.

Para estandarizar un medio de conjunto de datos a escala todos los valores del conjunto de datos de tal manera que el valor medio es 0 y la desviación estándar es de 1. Esto se realiza mediante un proceso de reescalamiento.

La forma más común de hacer esto es usando la estandarización de puntaje z, que escala valores usando la siguiente fórmula:

(x ix ) / s

dónde:

  • x i : el i- ésimo valor en el conjunto de datos
  • x : la media de la muestra
  • s : la desviación estándar de la muestra

Los siguientes ejemplos muestran cómo usar la función scale () al unísono con el paquete dplyr en R para escalar una o más variables en un marco de datos usando la estandarización z-score.

Estandarizar una sola variable en R

El siguiente código muestra cómo escalar solo una variable en un marco de datos con tres variables:

library(dplyr)

# Ponemos la semilla para que puedas obtener los mismos resultados
set.seed(1)

# Creamos un Data Frame
df <- data.frame(var1= runif(10, 0, 50), 
                 var2= runif(10, 2, 23),
                 var3= runif(10, 5, 38))

# Mostramos el Data Frame
df

        var1      var2      var3
1  13.275433  6.325466 35.845273
2  18.606195  5.707692 12.000703
3  28.642668 16.427480 26.505234
4  45.410389 10.066178  9.143318
5  10.084097 18.166670 13.818282
6  44.919484 12.451684 17.741765
7  47.233763 17.069989  5.441881
8  33.039890 22.830028 17.618803
9  31.455702  9.980739 33.699798
10  3.089314 18.326350 16.231517

# Reescalamos var 1 para que tenga media cero y desviación estandar igual a 1 
df2 <- df %>% mutate_at(c('var1'), ~(scale(.) %>% as.vector))
df2

          var1      var2      var3
1  -0.90606801  6.325466 35.845273
2  -0.56830963  5.707692 12.000703
3   0.06760377 16.427480 26.505234
4   1.13001072 10.066178  9.143318
5  -1.10827188 18.166670 13.818282
6   1.09890684 12.451684 17.741765
7   1.24554014 17.069989  5.441881
8   0.34621281 22.830028 17.618803
9   0.24583830  9.980739 33.699798
10 -1.55146305 18.326350 16.231517

Observe que solo se escaló la primera variable, mientras que las otras dos variables permanecieron iguales. Podemos confirmar rápidamente que la nueva variable escalada tiene un valor medio de 0 y una desviación estándar de 1:

# Calculamos la media de la variable estandarizada
mean(df2$var1)

[1] -4.18502e-18 #Aproximado a cero

# Calculamos la desviación estandar de la variable estandarizada
sd(df2$var1)

[1] 1

Estandarizar múltiples variables en R

El siguiente código muestra cómo escalar varias variables en un marco de datos a la vez:

library(dplyr)

# Ponemos la semilla para que puedas obtener los mismos resultados 
set.seed(1)

# Creamos el Data Frame
df <- data.frame(var1= runif(10, 0, 50), 
                 var2= runif(10, 2, 23),
                 var3= runif(10, 5, 38))

# Reescalamos var1 y var2 para que tengan media cero y desviación estandar igual a 1
df3 <- df %>% mutate_at(c('var1', 'var2'), ~(scale(.) %>% as.vector))
df3

          var1       var2      var3
1  -0.90606801 -1.3045574 35.845273
2  -0.56830963 -1.4133223 12.000703
3   0.06760377  0.4739961 26.505234
4   1.13001072 -0.6459703  9.143318
5  -1.10827188  0.7801967 13.818282
6   1.09890684 -0.2259798 17.741765
7   1.24554014  0.5871157  5.441881
8   0.34621281  1.6012242 17.618803
9   0.24583830 -0.6610127 33.699798
10 -1.55146305  0.8083098 16.231517

Estandarizar todas las variables de un data frame

El siguiente código muestra cómo escalar todas las variables en un marco de datos usando la función mutate_all :

library(dplyr) 
# Ponemos la semilla para que puedas obtener los mismos resultados 
set.seed(1) 

# Creamos el Data Frame 
df <- data.frame(var1= runif(10, 0, 50), 
                 var2= runif(10, 2, 23),
                 var3= runif(10, 5, 38))
# Reescalamos var1 y var2 para que tengan media cero y desviación estandar igual a 1
df4 <- df %>% mutate_all(~(scale(.) %>% as.vector))
df4

          var1       var2       var3
1  -0.90606801 -1.3045574  1.6819976
2  -0.56830963 -1.4133223 -0.6715858
3   0.06760377  0.4739961  0.7600871
4   1.13001072 -0.6459703 -0.9536246
5  -1.10827188  0.7801967 -0.4921813
6   1.09890684 -0.2259798 -0.1049130
7   1.24554014  0.5871157 -1.3189757
8   0.34621281  1.6012242 -0.1170501
9   0.24583830 -0.6610127  1.4702281
10 -1.55146305  0.8083098 -0.2539824

Recursos adicionales

Cómo normalizar datos en R
Cómo calcular la desviación estándar en R
Cómo imputar valores perdidos en R
Cómo transformar datos en R (logaritmo, raíz cuadrada, raíz cúbica)

  • https://r-project.org
  • https://www.python.org/
  • https://www.stata.com/

Redactor del artículo

  • Luis Benites
    Director de Statologos.com

    Tengo una Maestría en Ciencias en Estadística Aplicada y he trabajado en algoritmos de aprendizaje automático para empresas profesionales tanto en el sector de la salud como en el comercio minorista.

    Ver todas las entradas

¿Te hemos ayudado?

Ayudanos ahora tú, dejanos un comentario de agradecimiento, nos ayuda a motivarnos y si te es viable puedes hacer una donación:

La ayuda no cuesta nada

Por otro lado te rogamos que compartas nuestro sitio con tus amigos, compañeros de clase y colegas, la educación de calidad y gratuita debe ser difundida, recuerdalo:

Deja un comentario

La prueba de Goldfeld-Quandt se utiliza para determinar si la heterocedasticidad está presente en un modelo de regresión. La heterocedasticidad…
statologos comunidad-2

Compartimos información EXCLUSIVA y GRATUITA solo para suscriptores (cursos privados, programas, consejos y mucho más)

You have Successfully Subscribed!