Diciamo che ho il seguente data.table
in R
:
library(data.table)
DT = data.table(x=rep(c("b","a","c"),each=3), y=c(1,3,6), v=1:9)
Voglio ordinarlo per due colonne (diciamo colonne x
e v
). Ho usato questo:
DT[order(x,v)] # sorts first by x then by v (both in ascending order)
Ma ora, voglio ordinarlo per x
(in ordine decrescente) e avere il seguente codice:
DT[order(-x)] #Error in -x : invalid argument to unary operator
Pertanto, penso che questo errore sia dovuto al fatto che class(DT$x)=character
. Potresti darmi qualche suggerimento per risolvere questo problema?
So che posso usare DT[order(x,decreasing=TRUE)]
, ma voglio conoscere la sintassi per ordinare in base a più colonne usando entrambi i modi (alcuni in diminuzione, altri in aumento) allo stesso tempo.
Si noti che se si utilizza DT[order(-y,v)]
il risultato è ok, ma se si utilizza DT[order(-x,v)]
c'è un errore. Quindi, la mia domanda è: come risolvere questo errore?
DT[order(-x)]
non sia un'affermazione equivalente a setorder(DT, -x)
perché setorder()
agisce effettivamente DT
mentre l'altro no. Dichiarazioni equivalenti sarebbero DT <- DT [ordine (-x)] setorder (DT, -x) Sono molto nuovo su R, quindi per favore correggi se sbaglio.