Foro de debate

Seleccionar los 3 valores más altos de una variable

Seleccionar los 3 valores más altos de una variable

de Rafael Molina Venegas -
Número de respuestas: 3
Buenas. Les planteo un problema bastante sencillo que no consigo resolver

Tengo un data frame(VarEnv), con un factor de interés(COMARCA), y una variable de interés (MEAN). Entonces, para cada nivel del factor, quiero seleccionar los tres valores más altos de la variable. Entonces, lo hago de la siguiente manera

tapply(VarEnv$MEAN, VarEnv$COMARCA, FUN=???)

¿Qué función puedo utilizar?

Gracias

Rafa
En respuesta a Rafael Molina Venegas

Re: Seleccionar los 3 valores más altos de una variable

de Rafael Molina Venegas -
Ya encontré una solución. Muchas gracias



R
En respuesta a Rafael Molina Venegas

Re: Seleccionar los 3 valores más altos de una variable

de Usuario eliminado -
En respuesta a Usuario eliminado

Re: Seleccionar los 3 valores más altos de una variable

de Rafael Molina Venegas -

Claro que si, no faltaba más:

TempMedia3masfrios = tapply(SubsetbyTempMean$MEAN, SubsetbyTempMean$COMARCA, sort )
for (i in 1:48){
sort.i = sort(TempMedia3masfrios[[i]], decreasing=F)
TempMedia3masfrios[[i]]= mean(sort.i[1:3])
}

Lo que he hecho es aplicar la función sort a todos los niveles del factor COMARCA (48 niveles), de tal forma que obtengo una lista donde cada elemento contiene los valores de la variable "MEAN" para cada uno de los 48 niveles. Entonces, aplico un loop ordenando cada elemento en orden creciente o decreciente (según interesen los valores mayores o menores). Una vez hecho esto, ya puedo hacer lo que quiera con los valores deseados (en el ejemplo, calcular la media de los tres valores más bajos)

Rafa