से data.table में स्तंभ जोड़ने मैं आम कॉलम index1
& index2
द्वारा एक लुकअप तालिका के साथ मर्ज करके मेरी data.table में एक नया स्तंभ key
बनाना चाहते हैं जो एक बेहतर तरीका की तलाश। तो फिर इस नए key
स्तंभ (a
, b
, c
) के मूल्यों से, मैं 3 नए कॉलम (a
, b
, c
) कि data.table में value
स्तंभ सूचकांक उत्पन्न करने के लिए करना चाहते हैं।लुकअप तालिका
इस तरह मेरे data.table दिखता है:
index1 index2 key
1 1 1 a
2 1 2 b
3 2 1 a
4 2 2 c
5 3 1 c
6 3 2 b
अंतिम परिणाम इस तरह है::
index1 index2 value key a b c
1 2 0 0.00 NA NA NA NA
2 1 2 -5.00 b NA -5.00 NA
3 3 2 -5.00 b NA -5.00 NA
4 3 2 17.50 b NA 17.50 NA
5 2 2 15.00 c NA NA 15.00
6 1 2 -7.50 b NA -7.50 NA
7 3 2 3.75 b NA 3.75 NA
8 1 2 -8.75 b NA -8.75 NA
9 2 1 15.00 a 15.00 NA NA
10 2 1 12.50 a 12.50 NA NA
मैं इसे सुलझाने की कोशिश की
index1 index2 value
1 2 0 0.00
2 1 2 -5.00
3 3 2 -5.00
4 3 2 17.50
5 2 2 15.00
6 1 2 -7.50
7 3 2 3.75
8 1 2 -8.75
9 2 1 15.00
10 2 1 12.50
लुकअप तालिका यह है पहले डेटाटेबल और लुकअप टेबल को merge()
पर विलय करके, फिर J()
थ्रे का उपयोग किया गया उपर्युक्त परिणाम प्राप्त करने के लिए अलग समय। मैं डेटा.table के लिए काफी नया हूं, लेकिन कई बार प्रक्रिया को दोहराने के बजाय इसे हल करने के लिए एक और अधिक सुरुचिपूर्ण तरीका सीखना पसंद करूंगा।
DT <- merge(DT, lookup, by=c('index1', 'index2'), all.x=TRUE)
DT <- data.table(DT) #Don't know why but DT became a data.frame after merge()
DT[J("a"), a:=value]
DT[J("b"), b:=value]
DT[J("c"), c:=value]
मुझे अंतिम भाग नहीं मिलता है: 'मैं 3 नए कॉलम (ए, बी, सी) उत्पन्न करना चाहता हूं जो डेटाटेबल में मान को इंगित करता है) '। तुम्हारा क्या मतलब है? आपका अंतिम आउटपुट दिखा सकता है? आप 'NA' कुंजी को कैसे संभालना चाहते हैं? इसे किसी भी तरह से विलय करना 'एनए' बनाता है ... – Arun
मेरी माफ़ी। कोड ब्लॉक को लेबल करने का तरीका जानने का प्रयास कर रहा था। अब यह पूरी तरह से संपादित है। – SeanM
'विलय' का उपयोग न करें। इसके बजाय 'लुकअप [डीटी]' का उपयोग करें ('एक्स [वाई] 'वाक्यविन्यास)। आपको निश्चित रूप से ऐसा करने से पहले 'इंडेक्स 1, इंडेक्स 2' दोनों टेबल टेबल सेट करना चाहिए। – Arun