Powiedzmy, że mam następujący data.table
w R
:
library(data.table)
DT = data.table(x=rep(c("b","a","c"),each=3), y=c(1,3,6), v=1:9)
Chcę uporządkować według dwóch kolumn (powiedzmy kolumny x
i v
). Użyłem tego:
DT[order(x,v)] # sorts first by x then by v (both in ascending order)
Ale teraz chcę to posortować x
(w porządku malejącym) i mam następujący kod:
DT[order(-x)] #Error in -x : invalid argument to unary operator
Dlatego myślę, że ten błąd wynika z tego class(DT$x)=character
. Czy możesz podać mi jakąś sugestię, jak rozwiązać ten problem?
Wiem, że mogę używać DT[order(x,decreasing=TRUE)]
, ale chcę znać składnię do sortowania według kilku kolumn przy użyciu obu sposobów (niektóre malejące, niektóre zwiększające) w tym samym czasie.
Zauważ, że jeśli używasz, DT[order(-y,v)]
wynik jest w porządku, ale jeśli używasz DT[order(-x,v)]
, jest błąd. Więc moje pytanie brzmi: jak rozwiązać ten błąd?
DT[order(-x)]
nie jest to równoważne stwierdzeniu, setorder(DT, -x)
ponieważ setorder()
faktycznie działa, DT
podczas gdy inne nie. Równoważne stwierdzenia to DT <- DT [order (-x)] setorder (DT, -x) Jestem bardzo nowy w R, więc proszę poprawić, jeśli się mylę.