Foro de debate

Seleccionar los 3 valores más altos de una variable

Seleccionar los 3 valores más altos de una variable

by Rafael Molina Venegas -
Number of replies: 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
In reply to Rafael Molina Venegas

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

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



R
In reply to Rafael Molina Venegas

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

by Deleted user -
Y podrías compartirla?
Un saludo
In reply to Deleted user

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

by 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