में सशर्त बयान का उपयोग करना मैं कुछ शर्तों के आधार पर एक चर को रिकोड करने के लिए डेटा.table का उपयोग करने का प्रयास कर रहा हूं। मेरे मूल डेटासेट में लगभग 30 एम रिकॉर्ड हैं और सभी परिवर्तनीय सृजन के बाद लगभग 130 चर हैं। मैं तरीकों यहाँ सुझाव का प्रयोग किया: conditional statements in data.table(एम 1) और भी यहाँ data.table: Proper way to do create a conditional variable when column names are not known?(M2)r data.table
मेरा लक्ष्य नीचे दिए गए कोड के बराबर है, लेकिन कुछ है कि का उपयोग कर लागू होता है मिलता है data.table
samp$lf5 <- samp$loadfactor5
samp$lf5 <- with(samp, ifelse(loadfactor5 < 0, 0, lf5))
मैं स्वीकार करूंगा कि मुझे समझ में नहीं आ रहा है। एसडी और एसडीकॉल बहुत अच्छी तरह से, इसलिए मैं इसे गलत इस्तेमाल कर रहा हूं। कोड और से त्रुटियों (एम 1) और (M2) नीचे दिए गए हैं और नमूना डेटासेट यहाँ है: http://goo.gl/Jp97Wn
(एम 1)
samp[,lf5 = if(loadfactor5 <0) 0 else loadfactor5]
त्रुटि संदेश
Error in `[.data.table`(samp, , lf5 = if (loadfactor5 < 0) 0 else loadfactor5) :
unused argument (lf5 = if (loadfactor5 < 0) 0 else loadfactor5)
जब मैं ऐसा करता हूं:
samp[,list(lf5 = if(loadfactor5 <0) 0 else loadfactor5)]
यह एक सूची के रूप LF5 देता है, लेकिन नहीं samp के हिस्से के रूप में data.table और वास्तव में हालत लागू नहीं होता है के रूप में LF5 अभी भी 0.
(M2) की तुलना में कम मूल्य हैं
Col1 <- "loadfactor5"
Col2 <- "lf5"
setkeyv(samp,Col1)
samp[,(Col2) :=.SD,.SDCols = Col1][Col1<0,(Col2) := .SD, .SDcols = 0]
मैं निम्न त्रुटि
Error in `[.data.table`(samp, , `:=`((Col2), .SD), .SDCols = Col1) :
unused argument (.SDCols = Col1)
कैसे इस सराहना खत्म करने के लिए पर कोई अंतर्दृष्टि मिलता है। मेरे डेटासेट में 30 एम रिकॉर्ड हैं इसलिए मैं रनटाइम को वास्तव में कट करने के लिए डेटाटेबल का उपयोग करने की उम्मीद कर रहा हूं।
धन्यवाद,
कृष्णन
'सैंप [, एलएफ 5: = ifelse (loadfactor5 <0, 0, loadfactor5)]'; – eddi
पर यह पता लगाने के लिए एसओ पर 'एसडी' की खोज करें कि मैं वांछित परिणाम प्राप्त करने के लिए इस आदेश का उपयोग करने में सक्षम था। – Krishnan
@ कृष्णन, क्या आप इसे स्वयं उत्तर दे सकते हैं और इसे स्वीकार कर सकते हैं ताकि क्यू का उत्तर दिया जा सके? धन्यवाद। – Arun