Row Referencing in R data.table package -
कहें कि मेरे पास निम्न नमूना डाटासेट है:
आईरिस & lt; - data.table ( आईरिस) [सी (1: 5,51: 55,101: 105), सूची (आईडी =।, प्रजाति, अलग। लांघ)]
तब कहें कि मैं निरपेक्ष गणना करना चाहता हूं समूह के भीतर पंक्तियों के बीच अंतर (इस मामले में, प्रजातियां
)।
आईरिस [, SL.Diff: = c (NA, abs (diff (Sepal.Length ))), = प्रजातियों के द्वारा
इस बिंदु पर, मेरे पास एक डाटासेट है जो निम्न की तरह दिखता है:
आईडी प्रजाति Sepal.Length SL डिफ 1: 1 सेटोसा 5.1 एनए 2: 2 सेटोसा 4.9 0.2 3: 3 सेटोसा 4.7 0.2 4: 4 सेटोसा 4.6 0.1 5: 5 सेटोसा 5.0 0.4 6: 6 वर्लिकोलॉर 7.0 एनए अब मैं SL.Diff
0.3 के थ्रेशोल्ड की तुलना में कम है, तो एक नई चर Sepal.Length2
की गणना करना चाहते हैं।
< कोड> आईरिस [, Sepal.Length2: = इफेल (एसएल.डिफ & lt; 0.3, आईरिस [आईडी + 1] $ Sepal.Length, Sepal.Length)]
यह जिस तरह से मैं चाहता हूँ यह काम करता है लेकिन अगर मैं समान तुलना करना चाहता हूं लेकिन अगली पंक्ति को लेने के बजाय, मैं पिछली पंक्ति के मूल्य को लेना चाहता हूं?
आईरिस [, सेपोल। लांति 3: = ifelse (SL.Diff & lt; 0.3, आईरिस [आईडी-1] $ Sepal.Length, Sepal.Length)]
Sepal.Length3
आउटपुट नहीं देता कि मैं उम्मीद कर रहा था कोई भी जानता है कि मैं यहाँ गलत क्यों कर रहा हूं?
आईडी प्रजातियां Sepal.Length SL.Diff Sepal.Length2 Sepal.Length3 1: 1 सेटोसा 5.1 NA NA NA 2: 2 सेटोसा 4.9 0.2 4.7 4.9 3: 3 सेटोसा 4.7 0.2 4.6 4.7 4: 4 सेटोसा 4.6 0.1 5.0 4.6 5: 5 सेटोसा 5.0 0.4 5.0 5.0 6: 6 वर्लिकोलॉर 7.0 एनए एनए 7: 7 वर्जन 6.4 6.4 6.4 6.4 8 8 8 9 6.9 6.9 6.9 6.9 9: 9 versicolor 5.5 1.4 5.5 5.5 10: 10 versicolor 6.5 1.0 6.5 6.5 11:11 11 वर्जिनिया 6.3 एनए एनए 12 12 कुंवारी 5.8 0.5 5.8 5.8 13: 13 वर्जिनिका 7.1 1.3 7.1 7.1 14: 14 वर्जिनिका 6.3 0.8 6.3 6.3 15: 15 वर्जिनिया 6.5 0.2 एनए 5.1
< कोड> डेटा योग्य।
इसलिए डेटा के दायरे में i
और j
का मूल्यांकन करता है। आईरिस
(दूसरी बार) के दायरे में
आईरिस [आईडी + 1] $ Sepal.Length
उत्प्रवास आईडी
।
आपकी समस्या वास्तव में पैदा होती है क्योंकि आप 0
सूचकांक बना रहे हैं (जो चुपचाप R
द्वारा गिरा दिया गया है)
A & lt; - c ('a', 'b') a [0: 1] # [1] "a" a [1] # [1] "a"
, आपको "ज्ञात एनए वैल्यू" और निहित एनए मानों के साथ बेहतर सौदा करने की आवश्यकता है।
यहां एक दृष्टिकोण है
# "थ्रेसहोल्ड" कॉलम परिक्रमा [, थ्रेश: = SL.Diff & lt; 0.3] # जहां इसे "अप" करने की आवश्यकता होती है और आईआरआईएस [! Is.na (thresh), up: = ifelse (thresh, आईडी + 1 एल, आईडी) द्वारा किस अनुक्रमित मान की जरूरत है, ] # कॉलम आईरिस [, एस 2: = सेपेल। लांघ [ऊपर]] # "नीचे" आईरिस [! Is.na (thresh), डाउन: = ifelse (thresh, ID-1L, आईडी)] परितारिका के लिए समान बनाएं [, एस 3: = सेपेल। लांघ [डाउन]] आईरिस # आईडी प्रजाति Sepal.Length SL.Diff एस 2 के नीचे S2 # 1: 1 सेटोसा 5.1 एनए NA NA NA NA NA NA # 2: 2 सेटोसा 4.9 0.2 TRUE 3 4.7 1 5.1 # 3: 3 सेटोसा 4.7 0.2 सत्य 4 4.6 2 4.9 # 4: 4 सेटोसा 4.6 0.1 सत्य 5 5 .0 3 4.7 # 5: 5 सेटोसा 5.0 0.4 फल्स 5 5.0 5 5.0 # 6: 6 वर्निकोलॉर 7.0 एनए NA एनए एनए एनए एनए नं। 7: 7 वर्जन 6.4 6.4 6 7 7 7 6.4 7 6.4 # 8: 8 भूतल 6.9 0.5 फ़ाल्स 8 6.9 8 6.9 9: 9 वर्लिकोलोर 5.5 1.4 फल्स 9 5.5 9 5.5 # 10: 10 वर्लिकोलर 6.5 1.0 फसल 10 6.5 10 6.5 # 11 वर्जिनिका 6.3 एनए एनए एनए एनए एनए एनए एनए # 12: 12 वर्जिनिका 5.8 0.5 फल्स 12 5.8 12 5.8 # 13: 13 वर्जिनिका 7.1 1.3 FALSE 13 7.1 13 7.1 # 14: 14 वर्जिनिका 6.3 0.8 फ़ाल्स 14 6.3 14 6.3 # 15: 15 वर्जिनिका 6.5 0.2 सत्य 16 एनए 14 6.3
Comments
Post a Comment