Скажімо , у мене є такі data.table
в R
:
library(data.table)
DT = data.table(x=rep(c("b","a","c"),each=3), y=c(1,3,6), v=1:9)
Я хочу замовити його у двох стовпцях (скажімо стовпці x
та v
). Я використав це:
DT[order(x,v)] # sorts first by x then by v (both in ascending order)
Але тепер я хочу сортувати його за x
(у порядку зменшення) та мати такий код:
DT[order(-x)] #Error in -x : invalid argument to unary operator
Тому я думаю, що ця помилка пов’язана з тим, що class(DT$x)=character
. Чи можете ви дати мені якусь пропозицію для вирішення цього питання?
Я знаю, що можу використовувати DT[order(x,decreasing=TRUE)]
, але хочу знати синтаксис для сортування за кількома стовпцями, використовуючи обидва способи (деякі зменшуючи, деякі збільшуючи) одночасно.
Зауважте, що якщо ви використовуєте DT[order(-y,v)]
результат, це нормально, але якщо ви використовуєте DT[order(-x,v)]
, є помилка. Отже, моє запитання: як вирішити цю помилку?
DT[order(-x)]
це не рівнозначне твердження setorder(DT, -x)
тому, що setorder()
насправді діє на DT
той час, коли інший цього не робить. Еквівалентними висловлюваннями будуть DT <- DT [order (-x)] setorder (DT, -x) Я дуже новачок у R, тому будь ласка, виправте, якщо я помиляюся.