vectores una studio seleccionar operaciones obtener matriz matrices listas entre data concatenar columnas columna r dataframe mean

studio - calcular la media para cada columna de una matriz en R



operaciones entre columnas en r (6)

Estoy trabajando en R in R studio. Necesito calcular la media para cada columna de un marco de datos.

cluster1 // 5 by 4 data frame mean(cluster1) //

Tengo :

Warning message: In mean.default(cluster1) : argument is not numeric or logical: returning NA

Pero puedo usar

mean(cluster1[[1]])

para obtener la media de la primera columna.

¿Cómo obtener los medios para todas las columnas?

Cualquier ayuda sería apreciada.


En caso de que tengas NA:

sapply(data, mean, na.rm = T) # Returns a vector (with names) lapply(data, mean, na.rm = T) # Returns a list

Recuerde que "mean" necesita datos numéricos. Si tiene datos de clases mixtas, use:

numdata<-data[sapply(data, is.numeric)] sapply(numdata, mean, na.rm = T) # Returns a vector lapply(numdata, mean, na.rm = T) # Returns a list


Otra forma es usar el paquete purrr

# example data like what is said above

@A Carretilla Y Mohair

set.seed(1) m <- data.frame(matrix(sample(100, 20, replace = TRUE), ncol = 4)) library(purrr) means <- map_dbl(m, mean) > means # X1 X2 X3 X4 #47.0 64.4 44.8 67.8


Puede usar ''apply'' para ejecutar una función o las filas o columnas de una matriz o marco de datos numéricos:

cluster1 <- data.frame(a=1:5, b=11:15, c=21:25, d=31:35) apply(cluster1,2,mean) # applies function ''mean'' to 2nd dimension (columns) apply(cluster1,1,mean) # applies function to 1st dimension (rows) sapply(cluster1, mean) # also takes mean of columns, treating data frame like list of vectors


Puedes intentar esto:

mean(as.matrix(cluster1))


Puedes usar colMeans :

### Sample data set.seed(1) m <- data.frame(matrix(sample(100, 20, replace = TRUE), ncol = 4)) ### Your error mean(m) # [1] NA # Warning message: # In mean.default(m) : argument is not numeric or logical: returning NA ### The result using `colMeans` colMeans(m) # X1 X2 X3 X4 # 47.0 64.4 44.8 67.8


Para la diversidad: Otra forma es convertir una función vectorial en una que funcione con marcos de datos usando plyr::colwise()

set.seed(1) m <- data.frame(matrix(sample(100, 20, replace = TRUE), ncol = 4)) plyr::colwise(mean)(m) # X1 X2 X3 X4 # 1 47 64.4 44.8 67.8