כיצד להשתמש ב- .SD בחבילת R data.table

עבור חלק מהמשתמשים ב- data.table, "dot-SD" הוא קצת תעלומה. אבל היוצר של data.table מאט דאול אמר לי שזה בעצם די פשוט: פשוט חשוב על זה כסמל המייצג "כל קבוצה". בואו נעבור כמה דוגמאות.

יש לי מערך נתונים של טיולי אופניים יומיים ממערכת שיתופי האופניים של אזור בוסטון. אם תרצה לעקוב, תוכל להוריד את קובץ ה- CSV מהקישור בתחתית מאמר זה.

אני טוען את data.table ואייבא את קובץ ה- CSV שלי באמצעות fread()הפונקציה data.table . בקוד שלמטה, אני שומר את הנתונים בטבלת נתונים בשם mydt.

ספרייה (data.table)

mydt <- fread ("daily_cycling_trips_by_usertype.csv")

לאחר מכן, אני מציע להדפיס את שש השורות הראשונות head(mydt)כדי לראות איך הנתונים נראים. תראה שלנתונים יש עמודות לתאריך, סוג המשתמש (מנוי או לקוח חד-פעמי), מספר נסיעות, שנה ותאריך התחלה לחודש כדי לסייע בסיכומים לפי חודש.

הדוגמה הראשונה שמאט הציע: הדפס את השורות הראשונות בטבלת הנתונים מקובצות לפי סוג משתמש . (אנו מסננים את 12 השורות הראשונות רק כדי להקל על ראיית הפלט). 

mydt [1:12, הדפס (.SD), לפי = סוג usert]

print()חזר על כל קבוצה והודפס פעמיים נפרדות, אחת לכל סוג משתמש. אולם הבעיה היא שאני לא יודע איזו קבוצת המשתמשים של הלקוחות ואיזו קבוצת המשתמשים המנויים. העמודה "לפי" לא הודפסה. למרבה המזל, מאט הראה לי טריק קטן בשביל זה.

אם אתה מכיר את mydt[i, j, by]התחביר data.table, ישנם שלושה חלקים על סימון דיראק אחרי שם טבלת נתונים: i, j, ו by. iמיועד לסינון שורות, jמיועד למה שאתה רוצה לעשות byוכיצד אתה רוצה לקבץ את הנתונים שלך.

לדוגמה: 

mydt [1:12, {הדפס (.SD)}, לפי = usertype]

בשורת הקוד שלמעלה, פשוט שמתי סוגריים מסולסלים סביב jהחלק. זה יאפשר לי להוסיף ביטויים R מרובים בתוך jהטיעון.  עכשיו זה עדיין כמו קודם: אין שמות מסוג משתמשים.

אבל בתור ליד זה של הקוד, קראו את ההצהרה R הוספתי (טוב, מאט אמר לי להוסיף): print(.BY).

mydt [1:12, {הדפס (.BY); הדפס (.SD)}, לפי = usertype]

.BYהוא סמל data.table מיוחד המחזיק את הערך של by- לפי איזו עמודה או עמודות אני מקבץ.

אם אתה מריץ קוד זה, יהיה שם השם של כל משתנה קיבוץ יחד עם התדפיס.

שרון מכליס,

אז זו דוגמה בסיסית מאוד. אני מנחש שאולי תרצה לעשות משהו קצת יותר מעניין .SDמאשר להדפיס. לאחר מכן נסתכל על סיכום הנתונים לפי קבוצות, ונחשב באיזה יום היו הכי הרבה נסיעות בכל חודש השנה.

בשורת הקוד הזו יש הכל:

mydt [Year == "2019", .SD [which.max (Trips)], לפי = חודש התחלה]

iהטיעון הראשון בסוגריים מסנן עבור כל שורות שבן השנה היא 2019. jההטענה היא החלק המעניין .SD. חשוב .SDעלייך להתייחס לכל קבוצת הנתונים שלך. או כמו מאט אמר, "אתה עושה jעל ידי by. כמו forלולאה. ”

מה אם אתה רוצה לראות מקסימום לכל חודש וסוג משתמש? פשוט הוסף עמודה נוספת byלטיעון (השלישי):

mydt [Year == "2019", .SD [which.max (Trips)],

מאת =. (MonthStarting, סוג משתמש)]

ישנן מספר דרכים לבטא קיבוץ לפי יותר מעמודה אחת ב- data.table. דרך אחת היא עם הנקודה שלפני שמות העמודות שלא מצוטטות, כנ"ל. אחר הוא להשתמש listבמקום הנקודה, למשל: 

mydt [Year == "2019", .SD [which.max (Trips)],

לפי = רשימה (MonthStarting, usertype)]

ניתן גם להשתמש בווקטור R קונבנציונאלי עם מרכאות סביב כל שם עמודה. 

mydt [Year == "2019", .SD [which.max (Trips)],

מאת = c ("MonthStarting", "usertype")]

לקבלת טיפים נוספים בנושא R, עבור אל דף הווידאו "עשה יותר עם R" או עיין בפלייליסט של YouTube "עשה יותר עם R".

הורד קובץ CSV לדוגמא נתוני טיול אופניים לליווי המאמר והווידיאו שלי "כיצד להשתמש. SD בחבילת R data.table" שרון מכליס

מקווה להתראות בפרק הבא!