Disons que j'ai ce qui suit data.table
dans R
:
library(data.table)
DT = data.table(x=rep(c("b","a","c"),each=3), y=c(1,3,6), v=1:9)
Je veux le commander par deux colonnes (disons colonnes x
et v
). J'ai utilisé ceci:
DT[order(x,v)] # sorts first by x then by v (both in ascending order)
Mais maintenant, je veux le trier par x
( par ordre décroissant) et avoir le code suivant:
DT[order(-x)] #Error in -x : invalid argument to unary operator
Par conséquent, je pense que cette erreur est due au fait que class(DT$x)=character
. Pouvez-vous me donner des suggestions pour résoudre ce problème?
Je sais que je peux utiliser DT[order(x,decreasing=TRUE)]
, mais je veux connaître la syntaxe pour trier par plusieurs colonnes en utilisant les deux méthodes (certaines décroissantes, certaines croissantes) en même temps.
Notez que si vous utilisez DT[order(-y,v)]
le résultat est ok, mais si vous utilisez DT[order(-x,v)]
il y a une erreur. Alors, ma question est: comment résoudre cette erreur?
DT[order(-x)]
n’est pas une déclaration équivalente à setorder(DT, -x)
parce qu’elle setorder()
agit en fait DT
alors que l’autre n’agit pas. Les déclarations équivalentes seraient DT <- DT [ordre (-x)] setorder (DT, -x) Je suis très nouveau dans R donc veuillez corriger si je me trompe.