Suma y media de filas y columnas en R
Las funciones colSums
y colMeans
calculan la suma y la media de cada columna de un data frame o matriz mientras que rowSums
y rowMeans
calculan la suma y la media de cada una de las filas del objeto. Estas funciones son equivalentes a utilizar apply
con FUN = sum
o FUN = mean
para filas o columnas, pero mucho más eficientes.
Suma de cada columna con colSums
La función colSums
calcula la suma de cada una de las columnas de un data frame o matriz. En los siguientes bloques de código vamos a utilizar la siguiente matriz de ejemplo con cuatro columnas y nueve filas:
# Matriz de ejemplo
x <- matrix(50:85, ncol = 4)
x
[,1] [,2] [,3] [,4]
[1,] 50 59 68 77
[2,] 51 60 69 78
[3,] 52 61 70 79
[4,] 53 62 71 80
[5,] 54 63 72 81
[6,] 55 64 73 82
[7,] 56 65 74 83
[8,] 57 66 75 84
[9,] 58 67 76 85
Si quieres calcular la suma de cada una de las cuatro columnas, puedes introducir la matriz en la función colSums
.
# Suma de cada columna
colSums(x)
# Equivalente a:
# apply(x, 2, sum)
486 567 648 729
Así, la suma de la primera columna es 486, la suma de la segunda es 567, la suma de la tercera es 648 y la suma de la cuarta columna es 729.
Si tu objeto contiene algún valor NA
puedes establecer el argumento na.rm
como TRUE
. Considera la misma matriz pero con dos valores NA
:
# Matriz de ejemplo
x <- matrix(50:85, ncol = 4)
x[3, 2:3] <- NA
x
[,1] [,2] [,3] [,4]
[1,] 50 59 68 77
[2,] 51 60 69 78
[3,] 52 NA NA 79
[4,] 53 62 71 80
[5,] 54 63 72 81
[6,] 55 64 73 82
[7,] 56 65 74 83
[8,] 57 66 75 84
[9,] 58 67 76 85
Si intentas calcular las sumas obtendrás dos valores NA
en las columnas que contienen esos valores que faltan.
colSums(x)
486 NA NA 729
Para evitar este problema y calcular la suma de los valores disponibles tendrás que establecer na.rm = TRUE
como en el ejemplo siguiente.
# Suma de cada columna eliminando valores NA
colSums(x, na.rm = TRUE)
# Equivalente a:
# apply(x, 2, sum, na.rm = TRUE)
486 506 578 729
Media de cada columna con colMeans
La función colMeans
calcula la media de cada una de las columnas de un data frame o matriz.
# Matriz de ejemplo
x <- matrix(50:85, ncol = 4)
# Media de cada columna
colMeans(x)
# Equivalente a:
# apply(x, 2, mean)
54 63 72 81
La salida significa que la media de los valores de la primera columna es 54, la media de la segunda columna es 63 y así sucesivamente. Si tus datos contienen algún valor NA
recuerda establecer na.rm = TRUE
.
Suma de cada fila con rowSums
La función rowSums
calcula la suma de cada una de las filas de un data frame o matriz. Sólo tienes que introducir tu objeto en la función.
# Matriz de ejemplo
x <- matrix(50:85, ncol = 4)
# Suma de cada fila
rowSums(x)
# Equivalente a:
# apply(x, 1, sum)
254 258 262 266 270 274 278 282 286
En el ejemplo anterior, la suma de los valores de la primera fila es 254, la suma de la segunda fila es 258 y así sucesivamente. Si los datos contienen valores omitidos, puedes establecer el argumento na.rm
de la función como TRUE
para ignorarlos.
Media de cada fila con rowMeans
La función rowMeans
calcula la media de cada una de las filas de un data frame o matriz. Tendrás que pasar tu matriz o data frame como entrada de la función para obtener las medias de cada una de las filas.
# Matriz de ejemplo
x <- matrix(50:85, ncol = 4)
# Media de cada fila
rowMeans(x)
# Equivalente a:
# apply(x, 1, mean)
63.5 64.5 65.5 66.5 67.5 68.5 69.5 70.5 71.5
La media de los valores de la primera fila es 63.5, la media de los valores de la segunda fila es 64.5 y así sucesivamente.