Απόδοση των μοναδικών στη βάση vs data.table

ψήφοι
1

Έχω ένα αρκετά μεγάλο σύνολο δεδομένων (4.7M σειρές και 42 μεταβλητές). Όταν προσπαθώ να αποθηκεύσετε αυτή την κοινόχρηστη μονάδα δίσκου δουλεύω με saveRDSτα Windows ρίχνει ένα μήνυμα σφάλματος, αλλά μικρότερα σύνολα δεδομένων αποθηκεύσετε χωρίς πρόβλημα. Για να απαντήσετε σε αυτό το θέμα, αποφάσισα να ομαλοποιήσει τα δεδομένα μου και να αποθηκεύσετε τα σχετικά στοιχεία διάσταση και πραγματικότητα.

Μετά την εξαγωγή των στηλών που ορίζουν μια διάσταση των δεδομένων επόμενο βήμα μου ήταν να αφαιρέσει δύο φορές οι ίδιες διαστάσεις με unique, αλλά η εκτέλεση

dim_data <- unique(dim_data)

προκάλεσε συνεδρία μου να κρεμάσει για αρκετά μεγάλο χρονικό διάστημα πριν από την επιστροφή με το μήνυμα σφάλματος

Σφάλμα: μνήμη εξαντληθεί (όριο φτάσει;)

Σφάλμα κατά τη διάρκεια της σύνοψης: δεν μπορεί να διαθέσει φορέα του μεγέθους 127,6 Mb

(Μηχάνημα μου έχει 16 GB μνήμης RAM).

Θα παλέψει με αυτό για λίγο πριν προσπαθήσετε

dim_data <- as.data.table(dim_data)
dim_data <- unique(dim_data)

Σε ποιο σημείο της δεύτερης γραμμής που εκτελούνται άμεσα και με επιτυχία.

Είμαι στην ευχάριστη θέση να έχουμε μια λύση, και αντιλαμβάνομαι ότι μια διαφορετική εκδοχή του uniqueονομάζεται ανάλογα με την κατηγορία του επιχειρήματός της , αλλά αυτό που αντιπροσωπεύει την αδυναμία του uniqueακόμα για να ολοκληρώσει τον υπολογισμό του όταν εφαρμόζεται σε πλαίσια δεδομένων που υπερβαίνουν ένα ορισμένο μέγεθος; Είναι η εφαρμογή βάσης εξαιρετικά αναποτελεσματική, και αν ναι, είναι αυτή η γνωστή και έχει προγραμματιστεί για μια λύση (δεν μπόρεσα να βρω κάτι σχετικά με την απόδοση του unique); Αντιθέτως, είναι λιγότερο για την data.table εκτέλεση των καθηκόντων και για data.table αντικείμενα αποθηκεύονται πιο έξυπνα πίσω από τις σκηνές;

Δημοσιεύθηκε 07/11/2018 στις 23:43
πηγή χρήστη
Σε άλλες γλώσσες...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more