Hãy nói rằng tôi có những điều sau đây data.tabletrong 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 xvà 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 DTtrong 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.