De l'ordre d'une matrice par plusieurs colonnes dans la r
J'ai une matrice
df<-matrix(data=c(3,7,5,0,1,0,0,0,0,8,0,9), ncol=2)
rownames(df)<-c("a","b","c","d","e","f")
[,1] [,2]
a 3 0
b 7 0
c 5 0
d 0 8
e 1 0
f 0 9
et je voudrais commander la matrice dans l'ordre décroissant d'abord par la colonne 1, puis par colonne qui en résulte deux dans la matrice
df.ordered<-matrix(data=c(7,5,3,1,0,0,0,0,0,0,9,8),ncol=2)
rownames(df.ordered)<-c("b","c","a","e","f","d")
[,1] [,2]
b 7 0
c 5 0
a 3 0
e 1 0
f 0 9
d 0 8
Des suggestions sur comment je pourrais faire? Merci.
Vous devez vous connecter pour publier un commentaire.
La
order
fonction devrait le faire.df[do.call(order, c(decreasing = TRUE, data.frame(df[,1:2]))),]
Pour terminer la principale réponse, voici un moyen de le faire par programme, sans avoir à spécifier les colonnes à la main:
Comme un exemple simple, disons que je veux utiliser toutes les colonnes dans l'ordre de leur apparition pour trier les lignes de la matrice: (On pourrait facilement donner un vecteur d'indices de la matrice)
order
fonction de vous aider, essayez ceci:Le moins avant
df
indique que la commande est en baisse. Vous obtiendrez le même résultat réglagedecreasing=TRUE
.