Hãy nói rằng tôi có những điều sau đây data.table
trong R
:
library(data.table)
DT = data.table(x=rep(c("b","a","c"),each=3), y=c(1,3,6), v=1:9)
Tôi muốn đặt nó theo hai cột (nói cột x
và v
). Tôi đã sử dụng điều này:
DT[order(x,v)] # sorts first by x then by v (both in ascending order)
Nhưng bây giờ, tôi muốn sắp xếp nó theo x
(theo thứ tự giảm dần) và có đoạn mã sau:
DT[order(-x)] #Error in -x : invalid argument to unary operator
Do đó, tôi nghĩ lỗi này là do thực tế rằng class(DT$x)=character
. Bạn có thể cho tôi bất kỳ đề nghị để giải quyết vấn đề này?
Tôi biết tôi có thể sử dụng DT[order(x,decreasing=TRUE)]
, nhưng tôi muốn biết cú pháp để sắp xếp theo một số cột bằng cả hai cách (một số giảm, một số tăng) cùng một lúc.
Lưu ý rằng nếu bạn sử dụng DT[order(-y,v)]
kết quả là ok, nhưng nếu bạn sử dụng DT[order(-x,v)]
có lỗi. Vì vậy, câu hỏi của tôi là: làm thế nào để giải quyết lỗi này?
DT[order(-x)]
không phải là một tuyên bố tương đương setorder(DT, -x)
vì setorder()
thực sự hành động DT
trong khi người kia thì không. Các câu lệnh tương đương sẽ là setorder DT <- DT [order (-x)] (DT, -x) Tôi rất mới với R vì vậy hãy sửa nếu tôi nhầm.