मान लीजिए कि मेरे पास निम्नलिखित 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 [आदेश (-x)] सेटऑर्डर (DT, -x) होगा I R के लिए मैं बहुत नया हूं इसलिए यदि मैं गलत हूं तो कृपया सही करें।