aide fonction rank / décroissant

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Nicolas Giraud
Messages : 25
Enregistré le : 21 Juin 2018, 07:00

aide fonction rank / décroissant

Messagepar Nicolas Giraud » 27 Juin 2018, 08:53

Bonjour,

Je ne trouve pas dans la biblio l'argument de rank() me permettant d'affecter un rang décroissant à mon vecteur :

ORDRE CROISSANT

Code : Tout sélectionner

rank(c(4, -1, 2, 6))
[1] 3 1 2 4


ORDRE DECROISSANT ?

Merci

Cordialement
Nicolas

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: aide fonction rank / décroissant

Messagepar Pierre-Yves Berrard » 27 Juin 2018, 09:01

Bonjour,

Si les données sont numériques, tu peux calculer le rang de l'opposé pour avoir les rangs décroissants.

Code : Tout sélectionner

x <- c(4, -1, 2, 6)
rank(x)
#  3 1 2 4
rank(-x)
#  2 4 3 1
PY

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Re: aide fonction rank / décroissant

Messagepar Serge Rapenne » 27 Juin 2018, 09:11

Bonjour,

la solution de Pierre-Yves est très bien mais tu peux aussi faire :

Code : Tout sélectionner

vect<-c(4, -1, 2, 6)
length(vect)+1-rank(vect)
[1] 2 4 3 1


Serge

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: aide fonction rank / décroissant

Messagepar Pierre-Yves Berrard » 27 Juin 2018, 09:18

La solution de Serge présente l'avantage de fonctionner pour tout type de données.
(Merci !)
PY

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Re: aide fonction rank / décroissant

Messagepar Serge Rapenne » 27 Juin 2018, 09:37

Mais le mieux est peut être :

Code : Tout sélectionner

rank(desc(vect))
[1] 2 4 3 1

(Vu sur StackOverflow)
Serge

Edit sauf que ça nécessite le package dplyr

Nicolas Giraud
Messages : 25
Enregistré le : 21 Juin 2018, 07:00

Re: aide fonction rank / décroissant

Messagepar Nicolas Giraud » 27 Juin 2018, 10:34

Merci pour toutes vos bonnes astuces !

Cordialement,
Nicolas


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité