खोज…


परिचय

डेटाटेबल पैकेज में समय के साथ कई बदलाव और नवाचार हुए हैं। यहां कुछ संभावित नुकसान हैं जो उपयोगकर्ताओं को विरासत कोड को देखने या पुराने ब्लॉग पोस्ट की समीक्षा करने में मदद कर सकते हैं।

अनूठे और डुप्लिकेट किए गए अब कीटेड डेटा पर काम नहीं करते हैं

यह data.table> = 1.9.8 पर जाने वालों के लिए है

आपके पास पालतू जानवरों के मालिकों और नामों का एक डेटा सेट है, लेकिन आपको संदेह है कि कुछ दोहराया डेटा पर कब्जा कर लिया गया है।

library(data.table)
DT <- data.table(pet = c("dog","dog","cat","dog"),
                 owner = c("Alice","Bob","Charlie","Alice"),
                 entry.date = c("31/12/2015","31/12/2015","14/2/2016","14/2/2016"),
                 key = "owner")


> tables()
     NAME NROW NCOL MB COLS                 KEY  
[1,] DT      4    3  1 pet,owner,entry.date owner
Total: 1MB

एक मेज की तरह यह याद करेंगे। ऐलिस दो बार दर्ज किया गया है।

> DT
   pet   owner entry.date
1: dog   Alice 31/12/2015
2: dog   Alice  14/2/2016
3: dog     Bob 31/12/2015
4: cat Charlie  14/2/2016

मान लें कि आपने कुंजी के आधार पर अपने डेटा में डुप्लिकेट से छुटकारा पाने के लिए unique का उपयोग किया, हाल ही के डेटा कैप्चर की तारीख का उपयोग करके TRUE से।

1.9.8
clean.DT <- unique(DT, fromLast = TRUE)

> tables()
    NAME     NROW NCOL MB COLS                 KEY  
[1,] clean.DT    3    3  1 pet,owner,entry.date owner
[2,] DT          4    3  1 pet,owner,entry.date owner
Total: 2MB

ऐलिस डुप्लिकेट हटा दिया गया है।

1.9.8
clean.DT <- unique(DT, fromLast = TRUE)

> tables()
     NAME     NROW NCOL MB COLS                 KEY  
[1,] clean.DT    4    3  1 pet,owner,entry.date owner
[2,] DT          4    3  1 pet,owner,entry.date owner

यह काम नहीं करता। अभी भी 4 पंक्तियाँ!

ठीक कर

उस by= पैरामीटर का उपयोग करें जो अब आपकी कुंजी के लिए नहीं बल्कि सभी स्तंभों के लिए डिफ़ॉल्ट है

clean.DT <- unique(DT, by = key(DT), fromLast = TRUE)

अब सब ठीक है।

> clean.DT
   pet   owner entry.date
1: dog   Alice  14/2/2016
2: dog     Bob 31/12/2015
3: cat Charlie  14/2/2016

विवरण और स्टॉपगैप फिक्स

विवरण के लिए NEWS रिलीज़ नोट्स में आइटम 1 देखें:

V1.9.8 में परिवर्तन (CRAN 25 Nov 2016 को)

संभावित रूप से ब्रेकिंग चैनल

  1. डिफ़ॉल्ट रूप से सभी कॉलम अब unique() , duplicated() और uniqueN() डेटा.टेबल मेथड्स, # 1284 और # 1841 द्वारा उपयोग किए जाते हैं। पुराने व्यवहार को पुनर्स्थापित करने के लिए: options(datatable.old.unique.by.key=TRUE) । 1 वर्ष में पुराने डिफ़ॉल्ट को पुनर्स्थापित करने का यह विकल्प चेतावनी के साथ हटा दिया जाएगा। 2 साल में विकल्प हटा दिया जाएगा। कृपया स्पष्टता के लिए स्पष्ट रूप by=key(DT) से गुजरें। केवल कोड जो डिफ़ॉल्ट पर निर्भर करता है, प्रभावित होता है। रिलीज से पहले 26. CRAN और Bioconductor पैकेज data.table का उपयोग करके जांचे गए। 9 को बदलने की आवश्यकता थी और उन्हें अधिसूचित किया गया था। परीक्षण कवरेज के बिना कोड की कोई भी रेखा इन जांचों से छूट गई होगी। CRAN या BioconSTR पर कोई भी पैकेज चेक नहीं किया गया।

इसलिए आप अपने कोड के ठीक होने तक अस्थायी वर्कअराउंड के रूप में विकल्पों का उपयोग कर सकते हैं।

options(datatable.old.unique.by.key=TRUE)


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow