slides-10 - apply

מסמכים קשורים
אוניברסיטת חיפה החוג למדעי המחשב מבוא למדעי המחשב מועד א' סמסטר ב', תשע"ג, משך המבחן: שעתיים וחצי חומר עזר: אסור הנחיות: וודאו כי יש בידיכם

פתרון מוצע לבחינת מה"ט ב_שפת c מועד ב אביב תשע"ט, אפריל 2019 מחברת: גב' זהבה לביא, מכללת אורט רחובות שאלה מספר 1 מוגדרת מחרוזת המורכבת מהספרות 0 עד 9.

PowerPoint Presentation

Tutorial 11

אוניברסיטת בן גוריון בנגב תאריך המבחן: שקולניק אלכסנדר שם המרצה: מר בשפת JAVA מבוא לתכנות מבחן ב: מס' הקורס : הנדסת תעשיה וניהול מ

שאלהIgal : מערכים דו מימדיים רקורסיה:

מספר מחברת: עמוד 1 מתוך 11 ת"ז: תשע"א מועד ב סמסטר א' תאריך: 00:11 שעה: 0 שעות הבחינה: משך כל חומר עזר אסור בשימוש בחינה בקורס: מבוא למדעי ה

Microsoft Word B

אוניברסיטת בן גוריון בנגב תאריך המבחן: שם המרצה: מר אלכסנדר שקולניק, בשפת JAVA מבחן ב: מבוא לתכנות מס' הקורס : מיועד לתלמידי : הנד

מהוא לתכנות ב- JAVA מעבדה 3

מבוא לתכנות ב- JAVA תרגול 7

מספר זהות: סמסטר ב' מועד א' תאריך: 11102/4// שעה: 9:22 משך הבחינה: 3 שעות חומר עזר: אין מותר השימוש במחשבון פשוט בחינה בקורס: מבני נתונים מרצה: הדר בי

Microsoft Word - c_SimA_MoedB2005.doc

Slide 1

Slide 1

הגשה תוך שבוע בשעת התרגול

מבחן 7002 פרטים כלליים מועד הבחינה: בכל זמן מספר השאלון: 1 משך הבחינה: 3 שעות חומר עזר בשימוש: הכל )ספרים ומחברות( המלצות: קרא המלצות לפני הבחינה ובדי

תשע"דד אביב תוכנה 1 תרגיל מספר 4 עיבוד מחרוזות וקריאה מקבצים הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס..(

HTML - Hipper Text Makeup Language

שאלהIgal : מערכים דו מימדיים רקורסיה:

מבוא למדעי המחשב

Microsoft PowerPoint - T-10.ppt [Compatibility Mode]

מבוא למדעי המחשב

הגשה תוך שבוע בשעת התרגול

PowerPoint Presentation

Slide 1

PRESENTATION NAME

1 תבניות טקסט מהי תבנית טקסט? שימוש ב- Characters Meta שימוש ב- Expression Grouping שימוש ב- Quantifiers תת תבניות הפונקציה preg_match הפונקציה preg_m

PowerPoint Presentation

תרגול 1

שאלהIgal : מערכים דו מימדיים רקורסיה:

ex1-bash

PowerPoint Presentation

Slide 1

מבוא למדעי המחשב

Slide 1

תרגיל 9 מבוא ללוגיקה ותורת הקבוצות, סתיו תשע"ד 1. תהי L השפה בעלת סימן פונקצייה דו מקומי G, סימן פונקציה חד מקומי T, סימן יחס תלת מקומי.c, d וקבועים L

תרגול 3 - מערכים

תאריך פרסום: תאריך הגשה: מבנה נתונים תרגיל 5 )תיאורטי( מרצה ומתרגל אחראים: צחי רוזן, דינה סבטליצקי נהלי הגשת עבודה: -את העבודה יש לה

Slide 1

אוניברסיטת חיפה החוג למדעי המחשב.5.6 מבוא למדעי המחשב סמסטר א' תשע"ז בחינה סופית מועד א', מרצה: שולי וינטנר מתרגלים: סמאח אידריס, ראמי עילבו

Microsoft Word - c_SimA_MoedA2006.doc

Microsoft Word - Ass1Bgu2019b_java docx

פייתון

Slide 1

PowerPoint Presentation

דוגמאות שהוצגו בהרצאה 10 בקורס יסודות מערכות פתוחות דוגמה 1 דוגמאות של פונקציות ב- awk שמראות שהעברת פרמטרים של משתנים פשוטים היא by value והעברת פרמט

תוכנה 1 1 אביב תשע"ג תרגיל מספר 5 מערכים, מחרוזות, עיבוד טקסט ומבני בקרה הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגש

Microsoft Word - solutions.doc

שאלה 2. תכנות ב - CShell

סדנת תכנות ב C/C++

מבחן סוף סמסטר מועד א 15/02/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, דניאל גנקין הוראות: א. בטופס המבחן 7 עמודים ו 4 דפי נוסחאות. ב

מבוא למדעי המחשב - חובלים

ביו-סטטיסטיקה למתקדמים - תרגיל מספר 9

<4D F736F F D20F4FAF8E5EF20EEE5F2E320E020F1EEF1E8F820E120FAF9F2E3>

Slide 1

People. Partnership. Trust שלבי הפרויקט והמסלולים השונים - פלטפורמת "קהילה לומדת" מסלול Free שלבי הפרויקט: חיבור לשירותי Office 365 ללא עלות פורטל התח

מקביליות

תרגול מס' 7 – חזרה על MST ואלגוריתם Dijkstra

תכנות מונחה עצמים א' – תש"ע

מבוא למדעי המחשב

Python 2.7 in Hebrew

מבוא לתכנות ב- JAVA תרגול 11

ייבוא וייצוא של קבצי אקסל וטקסט

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

מועד: א בחינה סופית במתמטיקה דיסקרטית משך הבחינה: 2 1 שעות מרצה: פרופ' תאופיק מנסור תאריך: סמסטר: א תשע"ח m 2 הוראות לנבחן: )1( הבחינה מו

Microsoft PowerPoint - rec1.ppt

משימה תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם תרגול מס' 4: המתרגם שימוש במחלקות קיימות תכנות מתק

People. Partnership. Trust מסלול Free פורטל החינוך מבית U-BTech מסלולים ומחירים חיבור לשירותי Office 365 ללא עלות פורטל התחברות הכולל ממשק למנב"ס ולסי

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

<4D F736F F D20FAF8E2E9EC203220E0F7E520EEE020FAF9F2E1>

שעור 6

Slide 1

שקופית 1

פתרון 2000 א. טבלת מעקב אחר ביצוע האלגוריתם הנתון עבור הערכים : פלט num = 37, sif = 7 r האם ספרת האחדות של sif שווה ל- num num 37 sif 7 שורה (1)-(2) (

תוכן העניינים

תרגיל בית מספר 1#

WinZIP תוכנה לדחיסת קבצים ספטמבר 2007

Homework Dry 3

אוניברסיטת תל אביב - בית הספר למדעי המחשב מבוא מורחב למדעי המחשב, אביב 2019 תרגיל בית מספר - 2 להגשה עד 02/04/2019 בשעה 23:55 קיראו בעיון את הנחיות הע

תרגיל בית מספר 1#

2019 שאלות מומלצות לתרגול מס' דיפרנציאביליות של פונקציה סקלרית )המשך(. כלל השרשרת. S = ( x, y, z) z = x + 3y על המשטח מצאו נקודה בה מישור משיק

תוכן העניינים

<4D F736F F D20EEF9E5E5E0E5FA20E3E9F4F8F0F6E9E0ECE9E5FA2E646F63>

Algorithms Tirgul 1

AVerMedia Live Gamer Portable C875

עמוד 1 מתוך 5 יוחאי אלדור, סטטיסטיקאי סטטיסטיקה תיאורית + לוחות שכיחות בדידים/רציפים בגדול מקצוע הסטטיסטיקה נחלק ל- 2 תחומים עיקריים- סטט

Slide 1

פרק ג': עיצובים

מבוא למדעי המחשב - חובלים

פרויקט "רמזור" של קרן אביטל בס "ד מערך שיעור בנושא: "פונקציה" טליה קיפניס והדסה ערמי, מאולפנת צביה פרטים מקדימים על מערך השיעור: השיעור מהווה מבוא לנו

Microsoft Word - ExamA_Final_Solution.docx

תרגול מס' 4: המתרגם שימוש במחלקות קיימות מחרוזות, קבצים, וקבלת קלט מהמשתמש

תכנות דינמי פרק 6, סעיפים 1-6, ב- Kleinberg/Tardos סכום חלקי מרחק עריכה הרעיון: במקום להרחיב פתרון חלקי יחיד בכל צעד, נרחיב כמה פתרונות אפשריים וניקח

מתמטיקה של מערכות

תמליל:

עיבוד נתונים "עיבוד נתונים" כולל מבואלתכנותמדעיוסטטיסטי R חלק 10 פעולות נתונים מתקדמות שליפת נתונים סידור הנתונים מחדש קריאה בשמות אחרים לעמודות יצירת עמודות חדשות יצירת טבלה חדשה איחוד כמה טבלאות סיכום נתונים נעבוד גם עם פונקציות בסיסיות של R, וגם עם פונקציות מחבילות ייעודיות R חלק 10 2 R חלק 10 1 cats חילוץ אברים מווקטור / עמודה > library(mass) > head(cats) Sex Bwt Hwt 1 F 2.0 7.0 2 F 2.0 7.4 3 F 2.0 9.5 4 F 2.1 7.2 5 F 2.1 7.3 6 F 2.1 7.6 > str(cats) 'data.frame': 144 obs. of 3 variables: $ Sex: Factor w/ 2 levels "F","M": 1 1 1 1 1 1 1 $ Bwt: num 2 2 2 2.1 2.1 2.1 2.1 2.1 2.1 2.1 $ Hwt: num 7 7.4 9.5 7.2 7.3 7.6 8.1 8.2 8.3 איך מחלצים את משקל הגוף של החתולים הזכרים בלבד? אפשר דרך ערכיT/F, ואפשר דרך אינדקסים R חלק 10 3 > males.tf <- cats$sex == "M" > head(males.tf) [1] FALSE FALSE FALSE FALSE FALSE FALSE > males.ind <- which(cats$sex == "M") > head(males.ind) [1] 48 49 50 51 52 53 R חלק 10 4

/ עמודה וקטוריזציה חילוץ אברים מווקטור > Bwt.males.TF <- cats$bwt[males.tf] > head(bwt.males.tf) [1] 2.0 2.0 2.1 2.2 2.2 2.2 > Bwt.males.ind <- cats$bwt[males.ind] > head(bwt.males.ind) [1] 2.0 2.0 2.1 2.2 2.2 2.2 > cats[males.tf, "Bwt"] > subset(cats, Sex == "M", select=bwt) חלק 10 אפשר גם כך: וגם כך: R וקטוריזציה כמעט תמיד עדיפה על לולאות יותר מהיר, יותר ברור הרבה פונקציות ב- R בנויות עבור וקטורים / מטריצות > mean(log(cats$hwt)) [1] 2.338899 > head(is.na(cats), 5) Sex Bwt Hwt 1 FALSE FALSE FALSE 2 FALSE FALSE FALSE 3 FALSE FALSE FALSE 4 FALSE FALSE FALSE 5 FALSE FALSE FALSE R חלק 10 ב' תש"ף, 5 2019/20 6 משפחת apply apply משפחת הפונקציות apply מרחיבה את אפשרויות הווקטוריזציה נלמד ראשית על פונקציות מהתקנת הבסיס של R apply lapply tapply פונקציות בסיס קרובות, שלא נלמד עליהן aggregate,mapply,sapply apply מיועדת לעבוד עם מטריצות (וגם מערכים) > A <- matrix(1:6, 2, 3) > A [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 > apply(a, 1, sum) [1] 9 12 > apply(a, 2, sum) [1] 3 7 11 בשביל סכומים או ממוצעים, יותר יעיל לעבוד עם colsums, rowsums, colmeans, rowmeans R חלק 10 R חלק 10 ב' תש"ף, 7 2019/20 8

apply apply f <- function(v){ return(sum(v%%2 == 0)) } > apply(a, 2, f) [1] 1 1 1 כמה איברים זוגיים יש בכל עמודה? > apply(a, 2, function(v){sum(v%%2 == 0)}) [1] 1 1 1 אפשר גם כך אפשר להעביר דרך apply ארגומנטים לפונקציה שמפעילים על השורות / עמודות g <- function(v, k){ return(sum(v%%k == 0)) } > apply(a, 2, g, k=2) [1] 1 1 1 > apply(a, 2, g, k=3) [1] 0 1 1 חלק 10 R חלק 10 ב' תש"ף, 9 2019/20 R 10 apply lapply > B [,1] [,2] [,3] [1,] 1 2 3 [2,] 5 2 6 > apply(b, 2, unique) [[1]] [1] 1 5 כשאין ברירה, apply מחזירה רשימה הפונקציה lapply מקבלת כקלט וקטור (או רשימה), ומפעילה על כל אחד מהאברים (או פריטים) פונקציה נתונה lapply תמיד מחזירה רשימה [[2]] [1] 2 [[3]] [1] 3 6 R חלק 10 R חלק 10 ב' תש"ף, 11 2019/20 12

lapply lapply > lapply(1:4, sqrt) [[1]] [1] 1 [[2]] [1] 1.414214 [[3]] [1] 1.732051 [[4]] [1] 2 חלק 10 R חלק 10 ב' תש"ף, 13 2019/20 R > y <- list(c(1,3,3), c(4,4,4,5,5,6,8)) > y [[1]] [1] 1 3 3 [[2]] [1] 4 4 4 5 5 6 8 > lapply(y, unique) [[1]] [1] 1 3 [[2]] [1] 4 5 6 8 14 tapply tapply tapply מקבלת נתונים (בד"כ כווקטור), מפצלת אותם לקבוצות לפי פקטור, ומחזירה את תוצאת הפעלת פונקציה נתונה על כל קבוצה > tapply(cats$bwt, cats$sex, summary) $F Min. 1st Qu. Median Mean 3rd Qu. Max. 2.00 2.15 2.30 2.36 2.50 3.00 > max.bwt <- tapply(cats$bwt, cats$sex, max) > max.bwt F M 3.0 3.9 $M Min. 1st Qu. Median Mean 3rd Qu. Max. 2.0 2.5 2.9 2.9 3.2 3.9 R חלק 10 R חלק 10 ב' תש"ף, 15 2019/20 16

החבילה dplyr ncyflights13 החבילה dplyr מאפשרת עיבוד נתונים בגישה אחרת נתקין ונטען חבילה גדולה יותר,,tidyverse שכוללת את dplyr לצד חבילות נוספות שנצטרך לא להיבהל מהודעות המערכת בזמן ההתקנה > library(tidyverse) נדגים את dplyr דרך נתונים שבחבילה,ncyflights13 הכוללת מידע על 336,776 טיסות פנים שיצאו מניו-יורק בשנת 2013 > library(nycflights13) הנתונים שנעבוד איתם נמצאים במשתנה flights R חלק 10 18 R חלק 10 17 > flights # A tibble: 336,776 x 19 year month day dep_time sched_dep_time dep_delay arr_time <int> <int> <int> <int> <int> <dbl> <int> 1 2013 1 1 517 515 2. 830 2 2013 1 1 533 529 4. 850 3 2013 1 1 542 540 2. 923 4 2013 1 1 544 545-1. 1004 5 2013 1 1 554 600-6. 812 6 2013 1 1 554 558-4. 740 7 2013 1 1 555 600-5. 913 8 2013 1 1 557 600-3. 709 9 2013 1 1 557 600-3. 838 10 2013 1 1 558 600-2. 753 # with 336,766 more rows, and 12 more variables: # sched_arr_time <int>, arr_delay <dbl>, carrier <chr>, # flight <int>, tailnum <chr>, origin <chr>, dest <chr>, # air_time <dbl>, distance <dbl>, hour <dbl>, minute <dbl>, # time_hour <dttm> tibble tibble המשתנה flights הוא מסוג,tibble שזה מעין מסגרת נתונים "משופרת" למשל, בהדפסת tibble למסך, לכל עמודה מופיע בכותרת <int> עבור מספרים שלמים <dbl> עבור מספרים ממשיים <chr> עבור מחרוזות יש גם הבדלים קלים בטיפול בנתונים; למשל, עמודה של תווים לא נשמרת אוטומטית כפקטור תרגיל: לכמה יעדים שונים יצאו טיסות? הופכים מסגרת נתונים ל- tibble R חלק 10 19 ע"י הפקודה as_tibble > cats.2 <- as_tibble(cats) > cats.2 # A tibble: 144 x 3 Sex Bwt Hwt * <fct> <dbl> <dbl> 1 F 2.00 7.00 2 F 2.00 7.40 3 F 2.00 9.50 4 F 2.10 7.20 5 F 2.10 7.30 6 F 2.10 7.60 7 F 2.10 8.10 8 F 2.10 8.20 9 F 2.10 8.30 10 F 2.10 8.50 # with 134 more rows R חלק 10 20

tibble dplyr קוראים tibble ישירות מקובץ (מופרד ע"י טאבים) ע"י > branches <- read_tsv("branches.txt") > branches # A tibble: 20 x 6 name city region employees area revenue <chr> <chr> <chr> <int> <int> <dbl> 1 Bialik Tveria north 12 135 1.30 2 Carmel Haifa north 18 260 3.70 3 Shoshanim Raanana center 9 85 2.40 4 Hadar Tel Aviv center 24 310 5.50 5 Orot Tel Aviv center 15 270 2.60 שפע פרטים בתיעוד הפונקציה read_tsv R חלק 10 הפונקציות הבסיסיות של dplyr הן filter בחירת שורות על פי תנאים R חלק 10 ב' תש"ף, 21 2019/20 22 arrange שינוי סדר שורות select בחירת עמודות על פי השם שלהן mutate יצירת עמודות חדשות מתוך עמודות קיימות summarize סיכום עמודות group_by עבודה עם קבוצות של שורות כל הפונקציות עובדות גם על מסגרות נתונים רגילות, וגם על tibble םי- נקרא לשניהם להלן "טבלאות" dplyr filter כל הפונקציות הנ"ל עובדות באופן דומה: הארגומנט הראשון הוא טבלה הארגומנטים הבאים מתארים את הפעולה שיש לבצע, לפי שמות העמודות (שמופיעים ללא גרשיים) התוצאה היא טבלה חדשה אפשר לבצע סדרת פעולות זו אחר זו, כדי לקבל את התוצאה הסופית הפונקציה filter בוחרת שורות על פי תנאי אחד או יותר למשל, כל הטיסות שהמריאו ב- 3 בנובמבר: R חלק 10 23 > filter(flights, month == 11, day == 3) # A tibble: 902 x 19 year month day dep_time sched_dep_time dep_delay arr_time <int> <int> <int> <int> <int> <dbl> <int> 1 2013 11 3 519 520-1. 751 2 2013 11 3 538 545-7. 824 3 2013 11 3 553 600-7. 918 4 2013 11 3 553 600-7. 1028 5 2013 11 3 554 600-6. 709 6 2013 11 3 554 600-6. 839 7 2013 11 3 554 600-6. 848 R חלק 10 24

filter תרגילים arrange כתבו פקודות הבוחרות את כל הטיסות שהמריאו בתאריכים 10-20 בנובמבר כל הטיסות שהמריאו ב- 1 בינואר או ב- 1 במרץ כל הטיסות שהמריאו משדה התעופה JFK ושנחתו באיחור של שעתיים לפחות.1.2.3 הפונקציה arrange ממיינת טבלה הארגומנט הראשון הוא הטבלה, ואחריו שמות העמודות לפיהן צריך למיין > arrange(flights, dep_time) # A tibble: 336,776 x 19 year month day dep_time sched_dep_time dep_delay arr_time <int> <int> <int> <int> <int> <dbl> <int> 1 2013 1 13 1 2249 72. 108 2 2013 1 31 1 2100 181. 124 3 2013 11 13 1 2359 2. 442 4 2013 12 16 1 2359 2. 447 5 2013 12 20 1 2359 2. 430 6 2013 12 26 1 2359 2. 437 R חלק 10 26 R חלק 10 25 arrange arrange הארגומנט השלישי קובע את המיון במקרי תיקו של הארגומנט השני; הרביעי במקרי תיקו של השלישי, וכו' > arrange(flights, dep_time, month, day) # A tibble: 336,776 x 19 year month day dep_time sched_dep_time dep_delay arr_time <int> <int> <int> <int> <int> <dbl> <int> 1 2013 1 13 1 2249 72. 108 2 2013 1 31 1 2100 181. 124 3 2013 2 11 1 2100 181. 111 4 2013 2 24 1 2245 76. 121 5 2013 3 8 1 2355 6. 431 6 2013 3 18 1 2128 153. 247 R חלק 10 > arrange(flights, desc(dep_time), month, day) # A tibble: 336,776 x 19 מיון לפי סדר יורד: year month day dep_time sched_dep_time dep_delay arr_time <int> <int> <int> <int> <int> <dbl> <int> 1 2013 2 7 2400 2359 1. 432 2 2013 2 7 2400 2359 1. 443 3 2013 2 11 2400 2135 145. 251 4 2013 3 15 2400 2359 1. 324 5 2013 3 22 2400 2358 2. 339 6 2013 3 25 2400 2355 5. 339 7 2013 4 2 2400 2359 1. 339 8 2013 4 4 2400 2355 5. 347 9 2013 4 20 2400 2359 1. 338 R חלק 10 ב' תש"ף, 27 2019/20 28

select select הפונקציה select בוחרת עמודות מטבלה > select(flights, month, day, air_time) # A tibble: 336,776 x 3 month day air_time <int> <int> <dbl> 1 1 1 227. 2 1 1 227. 3 1 1 160. 4 1 1 183. 5 1 1 116. 6 1 1 150. היזהרו מקונפליקט עם select של החבילה!MASS R חלק 10 > select(flights, month, day, starts_with("dep")) # A tibble: 336,776 x 4 month day dep_time dep_delay <int> <int> <int> <dbl> 1 1 1 517 2. > select(flights, month, day, ends_with("time")) # A tibble: 336,776 x 7 month day dep_time sched_dep_time arr_time sched_arr_time <int> <int> <int> <int> <int> <int> 1 1 1 517 515 830 819 > select(flights, month, day, contains("de")) # A tibble: 336,776 x 7 month day dep_time sched_dep_time dep_delay arr_delay dest <int> <int> <int> <int> <dbl> <dbl> <chr> 1 1 1 517 515 2. 11. IAH R חלק 10 ב' תש"ף, 29 2019/20 30 select mutate עוד פונקציות ממשפחת :select > rename(flights, y = year, m = month, d = day) # A tibble: 336,776 x 19 y m d dep_time sched_dep_time dep_delay arr_time <int> <int> <int> <int> <int> <dbl> <int> 1 2013 1 1 517 515 2. 830 2 2013 1 1 533 529 4. 850 > select(flights, origin, dest, everything()) # A tibble: 336,776 x 19 origin dest year month day dep_time sched_dep_time dep_delay <chr> <chr> <int> <int> <int> <int> <int> <dbl> 1 EWR IAH 2013 1 1 517 515 2. 2 LGA IAH 2013 1 1 533 529 4. כל הפונקציות הנ"ל לא שינו את תוכן flights שבזיכרון הפונקציה mutate מוסיפה עמודות חדשות לטבלה נגדיר קודם טבלה מצומצמת, שאיתה נעבוד > flights.2 <- select(flights, origin, distance, air_time, arr_delay, dep_delay) > flights.2 # A tibble: 336,776 x 5 origin distance air_time arr_delay dep_delay <chr> <dbl> <dbl> <dbl> <dbl> 1 EWR 1400. 227. 11. 2. 2 LGA 1416. 227. 20. 4. 3 JFK 1089. 160. 33. 2. 4 JFK 1576. 183. -18. -1. 5 LGA 762. 116. -25. -6. R חלק 10 31 R חלק 10 32

mutate mutate > mutate(flights.2, speed = distance / (air_time / 60), gain = arr_delay - dep_delay) # A tibble: 336,776 x 7 origin distance air_time arr_delay dep_delay speed gain <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> 1 EWR 1400. 227. 11. 2. 370. 9. 2 LGA 1416. 227. 20. 4. 374. 16. 3 JFK 1089. 160. 33. 2. 408. 31. 4 JFK 1576. 183. -18. -1. 517. -17. 5 LGA 762. 116. -25. -6. 394. -19. 6 EWR 719. 150. 12. -4. 288. 16. 7 EWR 1065. 158. 19. -5. 404. 24. תרגיל: צרו טבלה חדשה בשם,flights.3 הכוללת את כל העמודות של,flights ובנוסף להן, את העמודות dep_hour dep_min arr_hour arr_min חלק 10 R חלק 10 ב' תש"ף, 33 2019/20 R 34 mutate transmute כדי להשמיט עמודה מטבלה: > mutate(flights.2, origin = NULL) # A tibble: 336,776 x 4 distance air_time arr_delay dep_delay <dbl> <dbl> <dbl> <dbl> 1 1400. 227. 11. 2. 2 1416. 227. 20. 4. 3 1089. 160. 33. 2. 4 1576. 183. -18. -1. 5 762. 116. -25. -6. 6 719. 150. 12. -4. 7 1065. 158. 19. -5. 8 229. 53. -14. -3. 9 944. 140. -8. -3. 10 733. 138. 8. -2. # with 336,766 more rows R חלק 10 > transmute(flights.2, origin, # A tibble: 336,776 x 3 origin speed gain <chr> <dbl> <dbl> 1 EWR 370. 9. 2 LGA 374. 16. 3 JFK 408. 31. 4 JFK 517. -17. 5 LGA 394. -19. 6 EWR 288. 16. הפונקציה transmute יוצרת טבלה חדשה speed = distance / (air_time / 60), gain = arr_delay - dep_delay) R חלק 10 ב' תש"ף, 35 2019/20 36

summarize summarize הפונקציה summarize (או (summarise מסכמת נתונים של עמודה > summarize(flights, mean_dist = mean(distance)) # A tibble: 1 x 1 mean_dist <dbl> 1 1040. פונקציות נפוצות לשימוש בתוך :summarize R חלק 10 median min, max n summarize שימושית בעיקר כשהיא מופעלת יחד עם,group_by שזו פונקציה שיוצרת טבלה "מקובצת" > flights_by_origin <- group_by(flights, origin) > flights_by_origin # A tibble: 336,776 x 19 # Groups: origin [3] year month day dep_time sched_dep_time dep_delay arr_time <int> <int> <int> <int> <int> <dbl> <int> 1 2013 1 1 517 515 2. 830 > summarize(flights_by_origin, mean_dist = mean(distance)) # A tibble: 3 x 2 origin mean_dist <chr> <dbl> 1 EWR 1057. 2 JFK 1266. 3 LGA 780. R חלק 10 ב' תש"ף, 37 2019/20 38 summarize summarize עוד דוגמא: > flights_by_date <- group_by(flights, year, month, day) > summarize(flights_by_date, flight_count = n()) # A tibble: 365 x 4 # Groups: year, month [?] year month day flight_count <int> <int> <int> <int> 1 2013 1 1 842 2 2013 1 2 943 3 2013 1 3 914 4 2013 1 4 915 5 2013 1 5 720 6 2013 1 6 832 7 2013 1 7 933 8 2013 1 8 899 9 2013 1 9 902 10 2013 1 10 932 # with 355 more rows R חלק 10 נציג גרפית את הקשר בין המרחק ליעד לבין ממוצעמשך האיחור בטיסה אליו ראשית, ניצור טבלה חדשה, מקובצת ע"פ היעד by_dest <- group_by(flights, dest) לכל יעד, נחשב את ממוצע מרחק הטיסה, ואת ממוצע האיחור בנחיתה delay <- summarize(by_dest, dist = mean(distance, na.rm = T), delay = mean(arr_delay, na.rm = T)) R חלק 10 ב' תש"ף, 39 2019/20 40

summarize pipe נציג דיאגרמת פיזור של שני המשתנים plot(delay$dist, delay$delay, xlab="mean distance", ylab="mean delay") הפתרון האחרון היה קצת מסורבל, כי נאלצנו להשתמש ב"טבלת ביניים", by_dest גישה אחרת: להשתמש ב- pipe של,dplyr שהאופרטור שלו הוא %<% delay <- flights %>% group_by(dest) %>% summarize(dist = mean(distance, na.rm = TRUE), delay = mean(arr_delay, na.rm = TRUE)) plot(delay$dist, delay$delay) ה- pipe מעביר את הפלט של הפונקציה שמשמאלו, להיות "כאילו" הארגומנט הראשון של הפונקציה שמימינו R חלק 10 R חלק 10 ב' תש"ף, 41 2019/20 42 pipe תרגילים פורמט "רחב" מול "ארוך" חזרו על התרגיל הקודם, אבל שהפעם בגרף ייכללו רק יעדים שהגיעו אליהם יותר מ- 20 טיסות, ולא ייכלל היעד הונולולו (HNL) מהו היעד שממוצע האיחור בנחיתה בו הוא הגדול ביותר? במהלך איזו שעה האיחור הממוצע בהמראה מ- JFK הוא הגדול ביותר, ומהו האיחור הממוצע? מהו שדה התעופה הנוסף, פרט להונולולו, שהמרחק אליו גדול מ- 3000?.1.2.3.4 בניסוי קליני, מודדים אצל כל נבדק רמה של חומר מסוים בדם שלוש פעמים: לפני הטיפולים (pre) אחרי טיפול א' (treat.a) אחרי טיפול ב' (treat.b) את הנתונים ניתן לשמור במסגרת נתונים בשני פורמטים: פורמט רחב :(wide) שורה אחת לכל נבדק, עם עמודות נפרדות לכל מדידה פורמט ארוך :(long) שלוש שורות לכל נבדק, עם מדידה בודדת בכל שורה R חלק 10 R חלק 10 ב' תש"ף, 43 2019/20 44

פורמט "רחב" מול "ארוך" פורמט "רחב" מול "ארוך" > dat_wide subject sex pre treat.a treat.b 1 1 M 7.9 12.3 10.7 2 2 F 6.3 10.6 11.1 3 3 F 9.5 13.1 13.8 4 4 M 11.5 13.4 12.9 חלק 10 R חלק 10 ב' תש"ף, 45 2019/20 R > dat_long subject sex condition measurement 1 1 M pre 7.9 2 1 M treat.a 12.3 3 1 M treat.b 10.7 4 2 F pre 6.3 5 2 F treat.a 10.6 6 2 F treat.b 11.1 7 3 F pre 9.5 8 3 F treat.a 13.1 9 3 F treat.b 13.8 10 4 M pre 11.5 11 4 M treat.a 13.4 12 4 M treat.b 12.9 46 פורמט "רחב" מול "ארוך" פורמט "רחב" מול "ארוך" יש פונקציות / תוכנות שבנויות לעבוד עם פורמט רחב, ויש כאלה עם פורמט ארוך ממירים מפורמט ארוך לרחב ע"י הפונקציה spread > spread(dat_long, condition, measurement) subject sex pre treat.a treat.b 1 1 M 7.9 12.3 10.7 2 2 F 6.3 10.6 11.1 3 3 F 9.5 13.1 13.8 4 4 M 11.5 13.4 12.9 ממירים מפורמט רחב לארוך ע"י הפונקציה gather > gather(dat_wide, condition, measurement, pre:treat.b) subject sex condition measurement 1 1 M pre 7.9 2 2 F pre 6.3 3 3 F pre 9.5 4 4 M pre 11.5 5 1 M treat.a 12.3 6 2 F treat.a 10.6 7 3 F treat.a 13.1 8 4 M treat.a 13.4 9 1 M treat.b 10.7 R חלק 10 R חלק 10 ב' תש"ף, 47 2019/20 48

פורמט "רחב" מול "ארוך" pull כדי להיות עוד יותר דומה ל- dat_long : > gather(dat_wide, condition, measurement, pre:treat.b) %>% arrange(subject) subject sex condition measurement 1 1 M pre 7.9 2 1 M treat.a 12.3 3 1 M treat.b 10.7 4 2 F pre 6.3 5 2 F treat.a 10.6 6 2 F treat.b 11.1 7 3 F pre 9.5 8 3 F treat.a 13.1 9 3 F treat.b 13.8 R חלק 10 הפונקציה pull שולפת עמודה מטבלה, ומחזירה אותה כווקטור (או פקטור) > flights %>% pull(origin) [1] "EWR" "LGA" "JFK" "JFK" "LGA" "EWR" "EWR" "LGA" [9] "JFK" "LGA" "JFK" "JFK" "JFK" "EWR" "LGA" "JFK" [17] "EWR" "LGA" "LGA" "EWR" "LGA" "LGA" "EWR" "JFK" [25] "EWR" "EWR" "JFK" "JFK" "JFK" "EWR" "EWR" "LGA" [33] "LGA" "EWR" "LGA" "JFK" "JFK" "EWR" "LGA" "LGA" [41] "EWR" "EWR" "LGA" "LGA" "JFK" "EWR" "EWR" "EWR > flights %>% pull(origin) %>% head(15) [1] "EWR" "LGA" "JFK" "JFK" "LGA" "EWR" "EWR" "LGA" "JFK" [10] "LGA" "JFK" "JFK" "JFK" "EWR" "LGA" R חלק 10 ב' תש"ף, 49 2019/20 50 טבלאות איחוד טבלאות איחוד > musicians.1 # A tibble: 3 x 3 name yr.birth cntry <chr> <dbl> <chr> 1 John Lennon 1940 UK 2 Stevie Wonder 1950 USA 3 Beyonce 1981 USA > musicians.2 # A tibble: 1 x 3 name yr.birth cntry <chr> <dbl> <chr> 1 Miles Davis 1926 USA נתונות שתי טבלאות קל לאחד "לאורך" טבלאות עם אותו סדר עמודות, ע"י הפונקציה :bind_rows > bind_rows(musicians.1, musicians.2) # A tibble: 4 x 3 name yr.birth cntry <chr> <dbl> <chr> 1 John Lennon 1940 UK 2 Stevie Wonder 1950 USA 3 Beyonce 1981 USA 4 Miles Davis 1926 USA R חלק 10 R חלק 10 ב' תש"ף, 51 2019/20 52

איחוד טבלאות טבלאות איחוד > musicians.3 # A tibble: 3 x 2 name sex <chr> <chr> 1 John Lennon M 2 Stevie Wonder M 3 Beyonce F > bind_cols(musicians.1, musicians.3) # A tibble: 3 x 5 name yr.birth cntry name1 sex <chr> <dbl> <chr> <chr> <chr> 1 John Lennon 1940 UK John Lennon M 2 Stevie Wonder 1950 USA Stevie Wonder M 3 Beyonce 1981 USA Beyonce F חלק 10 איך מאחדים "לרוחב"? R > bind_cols(musicians.1, select(musicians.3, sex)) # A tibble: 3 x 4 name yr.birth cntry sex <chr> <dbl> <chr> <chr> 1 John Lennon 1940 UK M 2 Stevie Wonder 1950 USA M 3 Beyonce 1981 USA F R חלק 10 ב' תש"ף, 53 2019/20 54 איחוד טבלאות איחוד טבלאות > musicians.1 # A tibble: 3 x 3 name yr.birth cntry <chr> <dbl> <chr> 1 John Lennon 1940 UK 2 Stevie Wonder 1950 USA 3 Beyonce 1981 USA > musicians.4 # A tibble: 3 x 2 name sex <chr> <chr> 1 Beyonce F 2 John Lennon M 3 Stevie Wonder M איך מתמודדים עם סדר שורות שונה? R חלק 10 > left_join(musicians.1, musicians.4, by="name") # A tibble: 3 x 4 name yr.birth cntry sex <chr> <dbl> <chr> <chr> 1 John Lennon 1940 UK M 2 Stevie Wonder 1950 USA M 3 Beyonce 1981 USA F יש כמה סוגים של,join ואפשר לבצע אתם פעולות יותר מורכבות R חלק 10 ב' תש"ף, 55 2019/20 56