7
votes

Comment trier le Dataframe dans R avec la préservation de la commande de colonne spécifiée?

Disons que j'ai un data.frame xxx

Je voudrais trier x par colonnes B et C mais garder l'ordre de A comme avant. x [commande (x $ b, x $ c),] - brise l'ordre de la colonne a. C'est ce que je veux: xxx

y a-t-il un moyen rapide de le faire?

Actuellement, je cours "pour" en boucle et triez chaque sous-ensemble, je suis sûr qu'il doit y avoir une meilleure façon.

Merci! Ilya


0 commentaires

3 Réponses :


7
votes

Si la colonne "A" est déjà commandée, alors c'est ce simple: xxx

si la colonne A n'est pas commandée (mais est regroupée), créez un nouveau facteur avec les niveaux de x $ A et utiliser cela.


2 commentaires

colonne "A" non ordonnée, mais groupée. Ordre de "a" dans data.frame est important.


Ça désigne premier x $ A sera trié puis x $ B basé sur x $ a, puis x $ C basé sur x $ A et x $ b, n'est-ce pas?



0
votes

Merci spaçadman! Votre recommandation fonctionne bien.

   x$a <- factor(x$a, levels = unique(x$a))
   x[order(x$a,x$b, x$c),]


4 commentaires

Vision qui échoue si x $ a est b b b a C c a d d d d - mais s'il est complètement groupé, alors vous avez terminé.


Dans mon ensemble de données, il ne pouvait pas être séparé en groupes.


Je pense que vous avez eu la mauvaise idée des facteurs. Le spaCedman de commande a été mentionné commandé dans les niveaux. commandé = true produit un facteur commandé , qui est un type de facteur spécial dans lequel il existe une commande semi-quantitative. Ce type de facteur est hors de propos du problème ici.


Probablement. Je ne suis pas vraiment familier avec des facteurs. Merci de clarification.



0
votes
require(doBy)
orderBy(~ a + b + c, data=x)

1 commentaires

Celui-ci changera l'ordre de la colonne A