Comment ordonner les lignes d'un tableau selon...

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

François Roullier
Messages : 21
Enregistré le : 09 Déc 2005, 11:11

Comment ordonner les lignes d'un tableau selon...

Messagepar François Roullier » 30 Nov 2007, 18:27

Bonjour,

Voila mon probleme:
je dispose d'une matrice à 2 colonnes: la premiere colonne correspond à mes valeurs, et la seconde à des indices de position (par ex 2 4 17 12 3 15 11,...).
Je souhaite reordonner toutes les lignes de ma matrice selon leur indice de position : remettre la valeur qui à l'indice 1 sur la premiere ligne, la valeur à l'indice=2 sur la seconde, etc.
Je seche un peu et en plus je n'ai pas trop de temps. Donc, je me tourne encore une fois vers le forum!!
Merci d'avance à ceux qui pourront m'aider.

françois

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 30 Nov 2007, 18:37

Voir ?order

Exemple d'un tri sur la seconde colonne d'une matrice:

Code : Tout sélectionner

> mat <- matrix(6:1, ncol = 2)
> mat
     [,1] [,2]
[1,]    6    3
[2,]    5    2
[3,]    4    1
>
> mat <- matrix(6:1, ncol = 2)
> mat
     [,1] [,2]
[1,]    6    3
[2,]    5    2
[3,]    4    1
> mat[order(mat[,2]), ]
     [,1] [,2]
[1,]    4    1
[2,]    5    2
[3,]    6    3


Renaud

François Roullier
Messages : 21
Enregistré le : 09 Déc 2005, 11:11

Messagepar François Roullier » 30 Nov 2007, 18:39

oui, order est la solution!
Je viens de le trouver tout seul en essayant!
Merci quand meme et bonne soirée!

fr

Stéphane Laurent
Messages : 1557
Enregistré le : 05 Déc 2006, 19:07

Messagepar Stéphane Laurent » 30 Nov 2007, 18:40

Disons que M est ta matrice. On va créer N la nouvelle matrice.


Code : Tout sélectionner

N <- array(NA, dim=dim(M))
n.lignes <- dim(M)[1]
for(i in 1 : n.lignes){
   condition <- M[,2] == i
   N[i, ] <- M[condition, ]
}

Stéphane Laurent
Messages : 1557
Enregistré le : 05 Déc 2006, 19:07

Messagepar Stéphane Laurent » 30 Nov 2007, 18:41

Ok pour order, ça m'épargnera du bricolage.


Retourner vers « Questions en cours »

Qui est en ligne

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