Προγραμματισμός

5 εύχρηστες επιλογές στο R data.fread's table

Όπως όλες οι λειτουργίες στο πακέτο data.table R, το fread είναι γρήγορο. Πολύ γρήγορα. Αλλά υπάρχουν περισσότερα πράγματα για να τα βγάλεις πέρα ​​από την ταχύτητα. Έχει πολλά χρήσιμα χαρακτηριστικά και επιλογές κατά την εισαγωγή εξωτερικών δεδομένων στο R. Εδώ είναι πέντε από τα πιο χρήσιμα.

Σημείωση: Εάν θέλετε να ακολουθήσετε, κατεβάστε το αρχείο CSV των New York Times καθημερινών υποθέσεων Covid-19 από την κομητεία των ΗΠΑ στη διεύθυνση //github.com/nytimes/covid-19-data/raw/master/us-counties. csv.

Χρησιμοποιήστε την επιλογή nreads nread

Είναι μεγάλο το αρχείο σας; Θα θέλατε να εξετάσετε τη δομή του πριν εισαγάγετε το όλο θέμα - χωρίς πρέπει να το ανοίξετε σε πρόγραμμα επεξεργασίας κειμένου ή Excel; Χρησιμοποιήστε το fread's στενεύει επιλογή για εισαγάγετε μόνο ένα τμήμα ενός αρχείου για εξερεύνηση.

Ο παρακάτω κώδικας εισάγει μόνο τις πρώτες 10 σειρές του CSV.

mydt10 <- fread ("us-counties.csv", nrows = 10)

Εάν θέλετε απλώς να δείτε ονόματα στηλών χωρίς καθόλου δεδομένα, μπορείτε να το χρησιμοποιήσετε nrows = 0

Χρησιμοποιήστε την επιλογή του fread

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

mydt <- fread ("us-counties.csv",

select = c ("ημερομηνία", "νομός", "πολιτεία", "περιπτώσεις"))

Όπως πάντα, οι αριθμοί δεν χρειάζονται εισαγωγικά:

mydt <- fread ("us-counties.csv", select = c (1,2,3,5))

Μπορείτε να χρησιμοποιήσετε ένα αντικείμενο R με ένα διάνυσμα ονομάτων στηλών στο fread, όπως μπορείτε να δείτε σε αυτήν την επόμενη ομάδα κώδικα. Δημιουργώ ένα διάνυσμα my_cols με ημερομηνία, κομητεία, πολιτεία και περιπτώσεις · τότε χρησιμοποιώ αυτόν τον φορέα μέσα στο fread.

my_cols <- c ("ημερομηνία", "νομός", "πολιτεία", "περιπτώσεις")

mydt <- fread ("us-counties.csv", select = my_cols)

Το αντίθετο από επιλέγω είναι πτώση. Μπορείτε να επιλέξετε την εισαγωγή όλων των στηλών εκτός με αυτά που καθορίζετε πτώση, όπως:

mydt <- fread ("us-counties.csv", drop = c ("fips", "death"))

Όπως με επιλέγω, πτώση παίρνει ένα διάνυσμα ονομάτων στηλών ή αριθμητικών θέσεων.

Χρησιμοποιήστε fread με grep

Εάν είστε εξοικειωμένοι με το Unix, μπορείτε εκτελέστε εργαλεία γραμμής εντολών απευθείας από το εσωτερικό. Για παράδειγμα, αν ήθελα απλώς δεδομένα στην Καλιφόρνια, θα μπορούσα να χρησιμοποιήσω το grep για να εισαγάγω μόνο γραμμές που περιέχουν το κείμενο "Καλιφόρνια". Σημειώστε ότι αυτό αναζητά κάθε ολόκληρη σειρά ως συμβολοσειρά κειμένου, όχι συγκεκριμένη στήλη, επομένως τα δεδομένα σας πρέπει να είναι σε μορφή που να έχει νόημα.

ca <- fread ("grep Καλιφόρνια us-counties.csv")

Δυστυχώς, το grep δεν κατανοεί τα ονόματα των στηλών του αρχικού αρχείου, επομένως καταλήγετε με προεπιλεγμένα ονόματα.

κεφαλή (ca) V1 V2 V3 V4 V5 V6 1: 2020-01-25 Orange California 6059 1 0 2: 2020-01-26 Los Angeles California 6037 1 0 3: 2020-01-26 Orange California 6059 1 0 4: 2020 -01-27 Λος Άντζελες Καλιφόρνια 6037 1 0 5: 2020-01-27 Orange California 6059 1 0 6: 2020-01-28 Λος Άντζελες Καλιφόρνια 6037 1 0

Ωστόσο, το fread μας επιτρέπει να καθορίσουμε ονόματα στηλών με το col. ονόματα επιλογή. Μπορώ να ορίσω τα ονόματα με βάση ονόματα από το mydt10 που δημιούργησα παραπάνω.

ca head (ca) Ημερομηνία πολιτείας κομητείας αναποδογυρίζει θανάτους 1: 2020-01-25 Orange California 6059 1 0 2: 2020-01-26 Los Angeles California 6037 1 0 3: 2020-01-26 Orange California 6059 1 0 4: 2020-01-27 Λος Άντζελες Καλιφόρνια 6037 1 0 5: 2020-01-27 Orange California 6059 1 0 6: 2020-01-28 Λος Άντζελες Καλιφόρνια 6037 1 0

Μπορούμε επίσης να χρησιμοποιήσουμε κανονικές εκφράσεις, με grep -ΜΙ επιλογή, επιτρέποντάς μας να κάνουμε πιο περίπλοκες αναζητήσεις, όπως να αναζητούμε τέσσερις καταστάσεις ταυτόχρονα.

States4 <- fread (cmd = "grep -E 'Texas | Αριζόνα | Φλόριντα | Νότια Καρολίνα' us-counties.csv",

col.names = ονόματα (mydt10))

Για άλλη μια φορά, μια υπενθύμιση: Αυτό ψάχνει για κάθε ένα από αυτά τα ονόματα κατάστασης οπουδήποτε στη σειρά, όχι μόνο στη στήλη κατάστασης. Εάν εκτελέσετε τον παραπάνω κωδικό και ελέγξτε ποιες καταστάσεις περιλαμβάνονται στα αποτελέσματα μοναδικό (state4 $ state), θα δείτε την Οκλαχόμα και το Μισσούρι στη στήλη των πολιτειών μαζί με το Τέξας, την Αριζόνα, τη Φλόριντα και τη Νότια Καρολίνα. Αυτό συμβαίνει επειδή τόσο η Οκλαχόμα όσο και το Μισσούρι έχουν κομητείες ονομάζεται Τέξας.

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

Χρησιμοποιήστε την επιλογή colClasses του fread

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

mydt <- fread ("us-counties.csv", colClasses = c ("ημερομηνία" = "Ημερομηνία"))

Τώρα, οι ημερομηνίες είναι Ημερομηνίες.

> str (mydt) Κατηγορίες «data.table» και «data.frame»: 322651 obs. από 6 μεταβλητές: $ ημερομηνία: Ημερομηνία, μορφή: "2020-01-21" "2020-01-22" "2020-01-23" ... $ county: chr "Snohomish" "Snohomish" "Snohomish" "Cook "... $ state: chr" Washington "" Washington "" Washington "" Illinois "... $ fips: int 53061 53061 53061 17031 53061 6059 17031 53061 4013 6037 ... $ case: int 1 1 1 1 1 1 1 1 1 1 ... θάνατοι $: int 0 0 0 0 0 0 0 0 0 0 ...

Χρησιμοποιήστε fread σε συμπιεσμένα αρχεία

Μπορείς εισαγάγετε ένα συμπιεσμένο αρχείο χωρίς να το αποσυμπιέστε πρώτα. Το fread μπορεί να εισάγει απευθείας αρχεία gz και bz2, όπωςmydt <- fread ("myfile.gz"). Εάν πρέπει να εισαγάγετε ένα αρχείο zip, μπορείτε να το αποσυμπιέσετε με το ανοίγω φερμουάρ εντολή συστήματος εντός του fread, χρησιμοποιώντας τη σύνταξηmydt <- fread (cmd = 'unzip -cq myfile.zip').

Για περισσότερες συμβουλές R, μεταβείτε στη σελίδα Do More With R.