मैं यह पता लगाने की है जब मैं R
में data.table package
में अनुक्रमण का उपयोग कैसे मैं logical operators
प्रदर्शन कर सकते हैं कोशिश कर रहा हूँ?आर पर डेटाटेबल में अनुक्रमण के माध्यम से लॉजिकल ऑपरेटरों को कैसे करें?
उदाहरण निम्नलिखित है। मैं datatable
को dt
के रूप में नामित करता हूं। तो अब मैं में मेरी पहले से ही key (var2)
जो less than 10 (<10)
हैं परिभाषित सभी मूल्यों की पहचान करना चाहते
> dt = data.table(var1 = rep(LETTERS[1:5],2), var2 = seq(1,20, 2), var3 = ceiling(rnorm(10, 3, 2)))
> dt
var1 var2 var3
1: A 1 5
2: B 3 3
3: C 5 0
4: D 7 6
5: E 9 3
6: A 11 4
7: B 13 2
8: C 15 1
9: D 17 3
10: E 19 7
> setkey(dt, var2)
: और फिर मेरी datatable
में कुंजी के रूप में var2
बनाते हैं। निम्नलिखित प्रयासों को करने से मुझे errors
दें।
> dt[ < 10]
Error: unexpected '<' in "dt[ <"
> dt[ .< 10]
Error in eval(expr, envir, enclos) : object '.' not found
> dt[ .(< 10)]
मेरी उम्मीद होगा:
var1 var2 var3
1: A 11 4
2: B 13 2
3: C 15 1
4: D 17 3
5: E 19 7
Btw, मुझे पता है कि सिर्फ करके मैं परिणाम मिल जाएगा। लेकिन कृपया ध्यान दें कि मैं data.table
में इंडेक्सिंग की अवधारणा प्राप्त करना चाहता हूं और समझता हूं और जानता हूं कि key(var2)
को मेरे प्रत्येक आदेश में कॉल किए बिना इसे कैसे किया जाए!
स्पष्टीकरण के साथ कोई भी सहायता अत्यधिक सराहना की जाती है।
'डीटी [var2 <10]'?स्पष्टीकरण के साथ आपको 10 से कम होने के लिए * कुछ * निर्दिष्ट करने की आवश्यकता है? – Gregor
@ ग्रेगोर, मुझे यह पता है और यह बहुत स्पष्ट है! लेकिन अनुक्रमण की अवधारणा यह है कि मुझे हर बार कॉलम नाम (कुंजी) कॉल करने की आवश्यकता नहीं है। तो, मैं अपने आदेश में 'var2' को कॉल किए बिना इसे कैसे कर सकता हूं? – Daniel
'? Setkey' या'? Key' से ऐसा लगता है कि आप कुंजी प्राप्त करने के लिए तालिका पर 'कुंजी()' को कॉल कर सकते हैं, इसलिए 'dt [dt [[key (dt)]] <10] 'इसके लिए काम करता है । आप यह भी कहने के लिए प्रश्न संपादित करना चाहेंगे कि आप इसे अपने आदेश में 'var2'' कॉल किए बिना प्रोग्रामेटिक रूप से करना चाहते हैं। – Gregor