Sortuj wiersze w danych.tabela w porządku malejącym na kluczu ciąg `order (-x, v)` daje błąd na data.table 1.9.4 lub wcześniejszym
Powiedzmy, że mam następującedata.table
wR
:
library(data.table)
DT = data.table(x=rep(c("b","a","c"),each=3), y=c(1,3,6), v=1:9)
Chcę zamówić go przez dwie kolumny (powiedz kolumny)x
iv
). 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 kolejności malejącej) i mają następujący kod:
DT[order(-x)] #Error in -x : invalid argument to unary operator
Dlatego uważam, że ten błąd wynika z tego, żeclass(DT$x)=character
. Czy mógłbyś mi zaproponować rozwiązanie tego problemu?
Wiem, że mogę użyćDT[order(x,decreasing=TRUE)]
, ale chcę znać składnię, aby sortować według kilku kolumn przy użyciu obu sposobów (niektóre maleją, a niektóre rosną) w tym samym czasie.
Pamiętaj, że jeśli używaszDT[order(-y,v)]
wynik jest w porządku, ale jeśli używaszDT[order(-x,v)]
tam jest błąd. Moje pytanie brzmi: jak rozwiązać ten błąd?