En R, el promedio de un vector se calcula con mean(x). Si el vector tiene valores faltantes (NA), el resultado es NA a menos que agregues na.rm = TRUE. Con trim = 0.1 descartas el 10 % de los valores más bajos y el 10 % de los más altos antes de promediar, lo que se conoce como media recortada.
Sintaxis
mean(x, trim = 0, na.rm = FALSE)
| Argumento | Qué hace |
|---|---|
x | Vector numérico o lógico (también fechas). Una columna de un data frame se pasa como df$columna |
trim | Fracción entre 0 y 0.5 que se elimina de cada extremo antes de promediar. Con 0.5 o más, devuelve la mediana |
na.rm | TRUE para ignorar los NA. Por omisión es FALSE y cualquier NA contamina el resultado |
Paso a paso
- Guarda los números en un vector con
c():notas <- c(7.5, 9, 8, 6, 10, 8.5). - Llama a
mean(notas). - Si el resultado es
NA, revisa si faltan datos y agregana.rm = TRUE. - Si hay valores extremos que no representan el caso típico, prueba
trim. - Redondea para mostrar con
round(mean(notas), 2).
Ejemplos resueltos
Ejemplo 1: promedio con un valor faltante
notas <- c(7.5, 9, 8, 6, 10, 8.5)
mean(notas)
parciales <- c(8, NA, 9.5, 7)
mean(parciales)
mean(parciales, na.rm = TRUE)
[1] 8.166667
[1] NA
[1] 8.166667
El primer vector suma 49 y tiene 6 valores. En el segundo, el NA hace que todo el promedio sea NA: R no supone que el dato que falta vale cero ni lo ignora sin que se lo pidas. Con na.rm = TRUE divide 24.5 entre 3 valores. R imprime 7 cifras significativas, por eso ves 8.166667.
Ejemplo 2: media recortada para tiempos con un valor atípico
Diez tiempos de respuesta en segundos, uno de ellos de 58 por una falla de red:
tiempos <- c(12, 14, 13, 15, 14, 13, 58, 12, 14, 13)
mean(tiempos)
mean(tiempos, trim = 0.1)
median(tiempos)
[1] 17.8
[1] 13.5
[1] 13.5
Con 10 datos y trim = 0.1, R elimina 1 valor de cada extremo (el 12 más bajo y el 58), y promedia los 8 restantes: 108 / 8 = 13.5. El promedio simple, 17.8, está por encima de 9 de los 10 tiempos. El número de valores eliminados en cada lado es floor(n * trim). Puedes comprobar el cálculo con la calculadora de media recortada.
Ejemplo 3: proporciones con vectores lógicos
mean sobre TRUE/FALSE da la proporción de TRUE, porque R los trata como 1 y 0:
asistio <- c(TRUE, FALSE, TRUE, TRUE)
mean(asistio)
mean(notas >= 8)
[1] 0.75
[1] 0.6666667
La asistencia fue del 75 %. En la segunda línea, notas >= 8 produce un vector lógico y mean da la fracción de notas de 8 o más: 4 de 6. Es la forma idiomática en R de calcular porcentajes que cumplen una condición.
Errores comunes
mean(1, 2, 3)devuelve 1.meanno recibe varios números sueltos: el primer argumento esxy los demás se interpretan comotrimyna.rm. Escribemean(c(1, 2, 3)).argument is not numeric or logical: returning NA. Pasaste texto o un data frame entero. Una columna leída como texto se convierte conas.numeric(df$col); para el promedio de varias columnas usacolMeans, explicado en promedio de columnas y filas.- Olvidar
na.rm = TRUE. Es la causa más común de unNAinesperado. Revisa cuántos faltan consum(is.na(x)). trimen porcentaje.trim = 10no significa 10 %: cualquier valor de 0.5 o más devuelve la mediana. Escribetrim = 0.1.- Factores con números.
as.numeric()sobre un factor devuelve los códigos internos (1, 2, 3…), no los valores. Usaas.numeric(as.character(f)).
Para ponderar cada valor de forma distinta, usa weighted.mean; para el valor central, median.
Fuentes
- R Core Team, documentación de mean (paquete base). Argumentos x, trim y na.rm. Consultado el 11 de noviembre de 2026.