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

Πώς να χρησιμοποιήσετε το .SD στο πακέτο R data.table

Για ορισμένους χρήστες του data.table, το "dot-SD" είναι λίγο μυστήριο. Αλλά ο δημιουργός του data.table Matt Dowle μου είπε ότι είναι πραγματικά πολύ απλό: Σκεφτείτε το ως σύμβολο που αντιπροσωπεύει «κάθε ομάδα». Ας δούμε μερικά παραδείγματα.

Έχω ένα σύνολο δεδομένων ημερήσιων εκδρομών με ποδήλατο από το σύστημα κοινής χρήσης ποδηλάτων της Βοστώνης. Αν θέλετε να ακολουθήσετε, μπορείτε να κατεβάσετε το αρχείο CSV από τον σύνδεσμο στο κάτω μέρος αυτού του άρθρου.

Θα φορτώσω το data.table και θα εισαγάγω το αρχείο CSV μου χρησιμοποιώντας το data.table's δίχτυ () λειτουργία. Στον παρακάτω κώδικα, αποθηκεύω τα δεδομένα σε έναν πίνακα δεδομένων που ονομάζεται mydt.

βιβλιοθήκη (data.table)

mydt <- fread ("daily_cycling_trips_by_usertype.csv")

Στη συνέχεια, προτείνω να εκτυπώσετε τις πρώτες έξι γραμμές με κεφάλι (mydt) για να δείτε πώς μοιάζουν τα δεδομένα. Θα δείτε ότι τα δεδομένα έχουν στήλες για την ημερομηνία, τον τύπο χρήστη (συνδρομητής ή πελάτης μίας διαδρομής), τον αριθμό των ταξιδιών, την ημερομηνία έναρξης του έτους και του μήνα για βοήθεια με τα σύνολα ανά μήνα.

Το πρώτο παράδειγμα που πρότεινε ο Matt: Εκτυπώστε τις πρώτες λίγες σειρές του πίνακα δεδομένων ομαδοποιούνται ανά τύπο χρήστη. (Φιλτράρουμε για τις πρώτες 12 σειρές για να διευκολύνουμε την προβολή της εξόδου).

mydt [1:12, εκτύπωση (.SD), κατά = usertype]

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

Εάν είστε εξοικειωμένοι με mydt [i, j, από] σύνταξη data.table, υπάρχουν τρία μέρη στη σημείωση αγκύλης μετά το όνομα του πίνακα δεδομένων: Εγώ, ι, και με. Εγώ είναι για φιλτράρισμα σειρών, ι είναι για αυτό που θέλετε να κάνετε και με είναι ο τρόπος με τον οποίο θέλετε να ομαδοποιήσετε τα δεδομένα σας.

Για παράδειγμα:

mydt [1:12, {print (.SD)}, κατά = usertype]

Στην παραπάνω γραμμή κώδικα, έβαλα απλά σγουρά τιράντες γύρω από το ι μέρος. Αυτό θα με αφήσει προσθέστε πολλές εκφράσεις R μέσα στο ι διαφωνία. Τώρα είναι το ίδιο όπως και πριν: κανένα όνομα χρήστη.

Αλλά σε αυτήν την επόμενη γραμμή κώδικα, κοιτάξτε τη δήλωση R που πρόσθεσα (καλά, μου είπε ο Matt να προσθέσω): εκτύπωση (.BY).

mydt [1:12, {εκτύπωση (.BY); εκτύπωση (.SD)}, κατά = usertype]

.ΜΕ είναι ένα ειδικό σύμβολο data.table που κρατά την τιμή του με - ποια στήλη ή στήλες ομαδοποιώ.

Εάν εκτελέσετε αυτόν τον κωδικό, θα έχετε το όνομα κάθε μεταβλητής ομαδοποίησης μαζί με την εκτύπωση.

Sharon Machlis,

Αυτό είναι ένα πολύ βασικό παράδειγμα. Υποθέτω ότι μπορεί να θέλετε να κάνετε κάτι πιο ενδιαφέρον με .SD παρά την εκτύπωση. Στη συνέχεια, ας δούμε τη σύνοψη των δεδομένων ανά ομάδα, υπολογίζοντας ποια ημέρα είχε τα περισσότερα ταξίδια κάθε μήνα φέτος.

Αυτή η γραμμή κώδικα έχει όλα:

mydt [Έτος == "2019", .SD [which.max (Trips)], by = MonthStarting]

ο Εγώ το πρώτο επιχείρημα στα αγκύλια φίλτρα για οποιεσδήποτε σειρές όπου το έτος είναι 2019. Το ι Το επιχείρημα είναι το ενδιαφέρον μέρος για .SD. Σκέφτομαι .SD ως αναφορά σε κάθε ομάδα δεδομένων σας. Ή όπως είπε ο Ματ, «Το κάνεις ι με με. Σαν ένα Για βρόχος."

Τι γίνεται αν θέλετε να δείτε τα μέγιστα για κάθε μήνα και τον τύπο χρήστη; Απλώς προσθέστε μια άλλη στήλη στο με (τρίτο) επιχείρημα:

mydt [Έτος == "2019", .SD [which.max (Trips)],

από =. (MonthStarting, usertype)]

Υπάρχουν διάφοροι τρόποι για να εκφράσετε την ομαδοποίηση με περισσότερες από μία στήλες στο data.table. Ένας τρόπος είναι με την τελεία πριν από τα μη εισαγωγικά ονόματα στηλών, όπως παραπάνω. Ένα άλλο είναι να χρησιμοποιήσετε λίστα αντί για την τελεία, για παράδειγμα:

mydt [Έτος == "2019", .SD [which.max (Trips)],

κατά = λίστα (MonthStarting, usertype)]

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

mydt [Έτος == "2019", .SD [which.max (Trips)],

από = c ("MonthStarting", "usertype")]

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

κατεβάστε το δείγμα αρχείου CSV Trip Data Bicycle Trip για να συνοδεύσετε το άρθρο "Τρόπος χρήσης .SD στο πακέτο R data.table" και βίντεο Sharon Machlis

Ελπίζω να σας δούμε το επόμενο επεισόδιο!

$config[zx-auto] not found$config[zx-overlay] not found