Powiedzmy, że mam następujący data.tablew 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 xi 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, DTpodczas 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ę.