Katakanlah saya memiliki berikut data.table
di R
:
library(data.table)
DT = data.table(x=rep(c("b","a","c"),each=3), y=c(1,3,6), v=1:9)
Saya ingin memesannya dengan dua kolom (katakanlah kolom x
dan v
). Saya menggunakan ini:
DT[order(x,v)] # sorts first by x then by v (both in ascending order)
Tapi sekarang, saya ingin mengurutkannya x
(dalam urutan menurun) dan memiliki kode berikut:
DT[order(-x)] #Error in -x : invalid argument to unary operator
Oleh karena itu, menurut saya kesalahan ini disebabkan oleh fakta itu class(DT$x)=character
. Bisakah Anda memberi saya saran untuk mengatasi masalah ini?
Saya tahu saya dapat menggunakan DT[order(x,decreasing=TRUE)]
, tetapi saya ingin mengetahui sintaks untuk mengurutkan berdasarkan beberapa kolom menggunakan kedua cara (beberapa menurun, beberapa meningkat) pada saat yang bersamaan.
Perhatikan bahwa jika Anda menggunakan DT[order(-y,v)]
hasilnya ok, tetapi jika Anda menggunakan DT[order(-x,v)]
ada kesalahan. Jadi, pertanyaan saya adalah: bagaimana mengatasi kesalahan ini?
DT[order(-x)]
bukanlah pernyataan yang setara dengan setorder(DT, -x)
karena setorder()
benar-benar bertindak DT
sementara yang lain tidak. Pernyataan yang setara akan menjadi DT <- DT [order (-x)] setorder (DT, -x) Saya sangat baru mengenal R jadi harap perbaiki jika saya salah.