Saltar al contenido principal

Función R sd(): Desviación estándar en R

Aprende a medir la variabilidad de tus datos utilizando la función sd() de R. Descubre ejemplos prácticos y técnicas esenciales para tratar los valores perdidos y los datos agrupados.
Actualizado 23 jun 2025  · 5 min de lectura

La desviación estándar es una de las formas más comunes de resumir la dispersión de tus datos. En R, la función sd() te ofrece una forma rápida de calcular esta medida de variabilidad, tanto si trabajas con vectores, marcos de datos o datos agrupados. 

En este artículo, repasaré los conceptos básicos del uso de sd() en R, exploraré cómo tratar los valores perdidos y demostraré cómo calcular desviaciones estándar entre grupos utilizando funciones como tapply() y paquetes como dplyr.

¿Qué hace sd() en R?

En R, la función sd() de R base calcula la desviación estándar de un vector numérico o de una columna de un marco de datos. Mide cuánto se desvían de la media los valores de tus datos, dándote una idea de la variabilidad o dispersión.

Si estás familiarizado con la idea de varianza, la desviación estándar es simplemente su raíz cuadrada y, debido a cómo se calcula (tomando la raíz cuadrada de la desviación media al cuadrado) la desviación estándar permanece en la misma escala que los datos originales. Esto facilita su interpretación práctica.

Un ejemplo sencillo de sd()

Supón que tienes un conjunto de números y quieres saber cuánto varían de la media.

Así es como lo harías en R:

exam_scores <- c(75, 80, 85, 90, 95) 
sd(exam_scores) 

La salida te indica la desviación estándar, que cuantifica la distancia media de cada puntuación respecto a la media.

Puedes utilizar sd() con cualquier vector numérico, incluidos enteros, dobles o resultados de cálculos. Ahora bien, puede que sepas que R trata los vectores lógicos como numéricos (TRUE como 1, FALSE como 0), por lo que la función sd() funcionaría técnicamente con vectores lógicos (puedes probarlo si quieres), pero la idea de desviación estándar tiene más sentido para datos numéricos continuos.

Tratamiento de valores perdidos con sd()

Los conjuntos de datos del mundo real suelen contener valores perdidos, por lo que merece la pena mencionarlo: Si tus datos incluyen algún valor de NA, sd() devolverá NA por defecto.

Considera este ejemplo:

heights <- c(170, 175, NA, 180, 185)
sd(heights)

El resultado es NA.

Para ignorar los valores que faltan y calcular la desviación estándar de los números disponibles, utiliza el argumento na.rm = TRUE. O bien, puedes eliminar los valores de NA de tu conjunto de datos, pero sólo te lo aconsejo si tiene sentido hacerlo.

sd(heights, na.rm = TRUE) 

Ahora obtendrás la desviación estándar para 170, 175, 180 y 185.

Calcular la desviación estándar de los marcos de datos en R

Puedes calcular fácilmente la desviación estándar de una columna concreta de un marco de datos utilizando el operador $. Supón que tienes un marco de datos de pesos de productos:

product_data <- data.frame( weight = c(1.2, 1.5, 1.3, 1.7, 1.4), price = c(10, 12, 11, 13, 12) ) 
sd(product_data$weight)

Esto te da la desviación estándar de la columna weight. Recuerda que sd() está diseñado para vectores numéricos, no para marcos de datos enteros. Selecciona siempre la columna adecuada.

sd() y desviaciones estándar agrupadas

A menudo, querrás medir la variabilidad dentro de los grupos, por ejemplo, por categoría, región o por algún otro factor. R proporciona varias formas de calcular desviaciones estándar agrupadas. Te enseñaré tres:

Utilizar tapply() para desviaciones estándar agrupadas

Supón que tienes datos de ventas de distintas regiones y quieres la desviación estándar de cada región:

sales_amount <- c(200, 220, 210, 250, 240, 230) 
region <- c("North", "North", "South", "South", "North", "South") 
tapply(sales_amount, region, sd)

tapply() aplica sd() a cada grupo definido por región.

Uso de aggregate() para desviaciones estándar agrupadas

Si prefieres tus resultados en un marco de datos ordenado, aggregate() funciona:

sales_data <- data.frame( region = c("North", "North", "South", "South", "North", "South"), amount = c(200, 220, 210, 250, 240, 230) ) 
aggregate(amount ~ region, data = sales_data, sd)

Esto produce un marco de datos de resumen con la desviación estándar de cada región.

Uso de dplyr para desviaciones estándar agrupadas

Con el paquete dplyr, los cálculos agrupados son aún más legibles. Utiliza summarize() después de agrupar:

library(dplyr) 

sales_data %>% 
   group_by(region) %>% 
   summarize(sd_amount = sd(amount))

Este enfoque es especialmente útil para conjuntos de datos más grandes o cuando se encadenan varias transformaciones de datos. (O si simplemente prefieres utilizar el operador tubería, como hago yo).

Errores comunes y consejos

Incluso una función sencilla como sd() puede causar problemas si no tienes cuidado. He aquí algunos escollos comunes:

  • Datos no numéricos: sd() sólo funciona con vectores numéricos. Si tus datos incluyen caracteres o factores, obtendrás un error. Utiliza is.numeric() para comprobar tus datos.

  • Valores perdidos: Un solo NA hará que sd() devuelva NA. Utiliza siempre na.rm = TRUE si quieres ignorar los valores perdidos.

  • Tamaños de muestra pequeños: sd() utiliza n-1 en el denominador (desviación estándar de la muestra). Para vectores de longitud 1, sd() devuelve NA, no 0.

Ese último error en particular, creo que es interesante. Es una diferencia menos conocida, y puede hacerte tropezar si pasas de Python a R, ya que Python divide por la desviación estándar de la población, no de la muestra.

Variaciones útiles y funciones relacionadas en R

R ofrece varias funciones relacionadas para medir la variabilidad y resumir los datos:

  • var(): Calcula la varianza, que es el cuadrado de la desviación estándar.

  • apply(), sapply(), lapply(): Útil para aplicar sd() en filas o columnas de matrices y marcos de datos.

  • mad(): Calcula la desviación absoluta mediana, que es otra medida interesante y más robusta de la variabilidad.

Permíteme mostrarte sd() utilizado con apply(), ya que lo he mencionado: A continuación te explicamos cómo utilizar apply() para obtener la desviación estándar de cada columna de una matriz. Como antes, crearé esa matriz sobre la marcha.

measurement_matrix <- matrix(1:9, nrow = 3) 
apply(measurement_matrix, 2, sd)

Esto devuelve la desviación estándar de cada columna, dándote una visión rápida de la variabilidad en múltiples variables.

Conclusión

La función sd() en R es relativamente sencilla (sólo tiene una línea de código). Pero si te encuentras utilizándolo para informes o presentaciones y te sientes un poco confuso con los detalles, inscríbete en nuestro programa de la carrera de Estadístico en R. Hay muchos matices en la estadística y el análisis de datos, así que asegúrate de que estás bien versado.


Josef Waples's photo
Author
Josef Waples
Temas

Aprende R con DataCamp

Programa

R Programming Fundamentals

0 min
Level-up your R programming skills! Learn how to work with common data structures, optimize code, and write your own functions.
Ver detallesRight Arrow
Comienza el curso
Ver másRight Arrow
Relacionado

blog

¿Qué es R? Introducción a la potencia del cálculo estadístico

Aprende todo lo que necesitas saber sobre el lenguaje de programación R y descubre por qué es el lenguaje más utilizado en ciencia de datos.
Summer Worsley's photo

Summer Worsley

15 min

Tutorial

Cómo calcular la desviación típica en Excel

Para calcular la desviación típica en Excel, introduce tus datos en un rango de celdas y utiliza =STDEV.S() para datos de muestra o =STDEV.P() para datos de población.
Arunn Thevapalan's photo

Arunn Thevapalan

10 min

Tutorial

Tutorial de pruebas T en R: Aprende a realizar pruebas T

Determina si existe una diferencia significativa entre las medias de los dos grupos utilizando t.test() en R.
Abid Ali Awan's photo

Abid Ali Awan

10 min

Tutorial

Tutorial sobre el uso de funciones en R

Descubra qué son las funciones R, los diferentes tipos de funciones en R y cómo crear sus propias funciones en R.
Javier Canales Luna's photo

Javier Canales Luna

11 min

Tutorial

Tutorial de regresión lineal en R

En este tutorial aprenderás los fundamentos de un modelo estadístico muy popular: la regresión lineal.

Eladio Montero Porras

15 min

Tutorial

Tutorial de tablas de contingencia en R

En este tutorial, aprenderás a crear tablas de contingencia y a probar y cuantificar las relaciones visibles en ellas.
Łukasz Deryło's photo

Łukasz Deryło

10 min

Ver másVer más