Diciamo che ho il seguente data.tablein 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 xe 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 DTmentre l'altro no. Dichiarazioni equivalenti sarebbero DT <- DT [ordine (-x)] setorder (DT, -x) Sono molto nuovo su R, quindi per favore correggi se sbaglio.