Disons que j'ai ce qui suit data.tabledans 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 xet 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 DTalors 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.