Cómo calcular la media de fila de columnas seleccionadas
Tengo un conjunto de datos que luce así:
data <- as.data.frame(cbind('01-01-2018' = c(1.2,3.1,0.7,-0.3,2.0), '02-01-2018' = c(-0.1, 2.4, 4.9,-3.3,-2.7), '03-01-2018' = c(3.4, -2.6, -1.8, 0.1, 0.3)))
01-01-2018 02-01-2018 03-01-2018
1 1.2 -0.1 3.4
2 3.1 2.4 -2.6
3 0.7 4.9 -1.8
4 -0.3 -3.3 0.1
5 2.0 -2.7 0.3
Quiero calcular la media de las filas considerando sólo las columnas que superen la media total de la fila.
data$mn <- apply(data, 1, mean)
01-01-2018 02-01-2018 03-01-2018 mn
1 1.2 -0.1 3.4 1.5000000
2 3.1 2.4 -2.6 0.9666667
3 0.7 4.9 -1.8 1.2666667
4 -0.3 -3.3 0.1 -1.1666667
5 2.0 -2.7 0.3 -0.1333333
En otras palabras, para cada fila, quiero calcular promedio de los valores que superan data$mn
.
Mi último intento fue:
data$mintensity <- apply(data, 1, function(x) mean(x[x > data$mn]))
pero no tuvo éxito.
davy.ai
Para calcular las medias de fila considerando únicamente las columnas que superan la media total de la fila, se puede usar el siguiente código:
La primera línea calcula la media de cada fila y la almacena en una nueva columna “mn” en el dataframe “data”. La segunda línea utiliza una función anónima para calcular la media únicamente de los valores en cada fila que superan la media de la fila, que se almacena en una nueva columna “mintensity”. Esto debería darle el resultado deseado: