ধরা যাক আমার নিম্নলিখিতগুলি 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
যখন অন্যটি তা করে না। সমতুল্য বিবৃতিগুলি হবে ডিটি <- ডিটি [অর্ডার (-x)] সেটর্ডার (ডিটি, -x) আমি আর এ খুব নতুন তাই ভুল হয়ে থাকলে দয়া করে সঠিক করুন।