תיעוד R
מדריך עיון תמציתי ל-R, מבוסס דוגמאות. קוראים את המושג, רואים את הקוד, ואז מתרגלים אותו במסלול של Coddy.
Getting Started
- מה זה R?מהי שפת התכנות R, מאיפה היא הגיעה, למה משתמשים בה ואיך היא בהשוואה ל-Python, עם טעימה ראשונה של קוד R שאפשר להריץ.
- התקנת Rאיך להוריד את R מ-CRAN ולהתקין אותו ב-Windows, macOS או Linux, ובנוסף את RStudio, סביבת הפיתוח שכמעט כולם כותבים בה R.
- הרצת סקריפט Rכל הדרכים להריץ קוד R: הקונסולה האינטראקטיבית, Rscript משורת הפקודה, source() מתוך R, והפקודות Run ו-Source ב-RStudio.
- תחביר Rהליבה של תחביר R: השמה עם <-, ביטויים והדפסה אוטומטית, קריאות לפונקציות עם ארגומנטים בעלי שם, והכלל שלפיו הכול וקטור.
- הערותאיך עובדות הערות ב-R: הסימן #, למה אין ב-R הערה מרובת שורות אמיתית, קיצור הדרך של RStudio להפיכת בלוק להערה, ומה כתוב בהערות טובות.
Variables & Data
- משתניםאיך יוצרים משתנים ב-R עם החץ <-, מתי דווקא צריך =, כללי מתן השמות, ואיך מציגים ומוחקים משתנים עם ls() ו-rm().
- סוגי נתוניםסוגי הנתונים האטומיים ב-R, double, integer, character ו-logical, ההבדל בין typeof() ל-class(), ואיך עובדות המרה וכפיית סוג.
- מספריםעבודה עם מספרים ב-R: numeric מול integer, משפחת פונקציות העיגול, sqrt ו-log, אופרטור המודולו %%, והערכים המיוחדים Inf ו-NaN.
- מחרוזותכל מה שצריך לטקסט ב-R: יצירת מחרוזות, חיבור עם paste ו-paste0, עיצוב עם sprintf, וחיפוש עם gsub, grepl ו-strsplit.
- קלט ופלטאיך פלט עובד ב-R: הדפסה אוטומטית, print() מול cat(), message(), ואיך קוראים קלט מהמשתמש עם readline() ו-readLines().
Control Flow
- אופרטוריםכל אופרטור שצריך ב-R: חשבון כולל %% ו-%/%, השוואות וקטוריות, ההבחנה בין & ל-&&, ו-%in% לבדיקת שייכות.
- If / Elseלוגיקה מותנית ב-R: התחביר של if/else if/else, מלכודת הסוגריים המסולסלים ששוברת סקריפטים, ifelse() הווקטורי לווקטורים שלמים, ו-switch() לבחירה בין כמה אפשרויות.
- לולאות forאיך עובדות לולאות for ב-R: מעבר על וקטורים ועל אינדקסים, איסוף תוצאות בלי מלכודת הווקטור שגדל, next ו-break, ומתי קריאה וקטורית עדיפה על לולאה.
- לולאות Whileאיך לולאות while עובדות ב-R: לולאה שבודקת את התנאי קודם, repeat עם break כ-do-while של R, next, וההרגלים שמרחיקים אתכם מלולאות אינסופיות.
Data Structures
- וקטוריםוקטורים הם יחידת הבסיס של R, ואפילו מספר בודד הוא וקטור. איך יוצרים אותם עם c(), בוחרים איברים לפי אינדקס (מ-1!), מסננים עם מסכות לוגיות, ומחשבים על וקטורים שלמים בבת אחת.
- רשימותרשימות הן המכל של R שמקבל הכול: טיפוסים מעורבים, מבנים מקוננים, data frames שלמים. המיומנות המרכזית היא לדעת מתי [ מחזיר רשימה קטנה יותר ומתי [[ מחזיר את האיבר עצמו.
- מטריצותאיך בונים מטריצות עם matrix(), cbind() ו-rbind(), ניגשים לשורות ולעמודות, ומפרידים בין * שפועל איבר אחר איבר לבין כפל מטריצות אמיתי %*%.
- FactorsFactors הם הדרך של R לאחסן נתונים קטגוריאליים: קודים של מספרים שלמים עם תוויות טקסט. איך יוצרים אותם, מסדרים אותם, קובעים את רמת הייחוס, ומתחמקים ממלכודת ההמרה של factor למספר.
- Data Framesה-data frame הוא הגיליון האלקטרוני של R: עמודות עם שמות ובאורך שווה, לכל אחת סוג משלה. איך בונים אחד, בוחנים אותו עם str() ו-head(), ומגיעים לעמודות, לשורות ולתאים.
- ערכים חסרים (NA)NA פירושו "לא ידוע", והוא מתפשט דרך כל חישוב שהוא נוגע בו. איך מזהים אותו עם is.na(), מדלגים עליו עם na.rm = TRUE, ומסירים או מחליפים אותו במכוון.
Functions & Packages
- פונקציותאיך יוצרים פונקציה ב-R: התחביר function(x) { }, ערכי החזרה, ארגומנטים עם ברירת מחדל וארגומנטים בעלי שם, ה-... (dots), פונקציות אנונימיות ואיך עובד ה-scoping.
- משפחת applyמשפחת apply, כלומר apply, lapply, sapply, vapply, mapply ו-tapply, מריצה פונקציה על כל איבר בנתונים שלכם. הנה מה כל אחת עושה ומתי כדאי להשתמש בה.
- Pipesמה פירוש %>%, איך ה-pipe המובנה |> של R הבסיסי עובד, הכללים וממלאי המקום של כל אחד, ובאיזה מהם להשתמש בקוד חדש.
- חבילותאיך חבילות R עובדות: התקנה מ-CRAN עם install.packages(), טעינה עם library(), require() מול library(), pkg::fun(), והחבילות ששווה להכיר.
- תיקיית העבודהאיפה R מחפשת קבצים ואיך שולטים בזה: getwd(), setwd(), list.files(), ניקוי הסביבה עם rm(list = ls()), ולמה השמירה האוטומטית של .RData היא מלכודת.
Data Wrangling
- dplyrמה זה dplyr, איך מתקינים אותה, ואיך שישה פעלי ליבה יחד עם ה-pipe הופכים קוד מבולגן של data frames לצינורות קריאים.
- סינון וחיתוךכל הדרכים להשאיר את השורות והעמודות שאתם רוצים: מסכות לוגיות עם סוגריים, ה-one-liner של subset(), %in%, מלכודות NA, ו-filter() ו-select() של dplyr.
- הוספת עמודות (mutate)איך מוסיפים, משנים ומסירים עמודות ב-data frame: df$new <- ..., ifelse() לעמודות מותנות, transform(), ו-mutate() של dplyr עם case_when().
- שינוי שמות עמודותשינוי שמות של עמודות ב-data frame ב-R: names() ו-colnames(), שינוי שם לפי מיקום מול לפי שם, setNames(), rename() של dplyr, וניקוי כותרות מבולגנות מקבצים מיובאים.
- מיוןאיך מיון באמת עובד ב-R: sort() לווקטורים, למה data frames צריכים את טריק האינדקסים של order(), מיון יורד ומיון לפי כמה עמודות, ו-arrange() של dplyr.
- קיבוץ וסיכוםכל הדרכים לחשב סטטיסטיקות לפי קבוצה ב-R: ספירה עם table(), tapply() לסטטיסטיקה אחת לכל קבוצה, ממשק הנוסחה של aggregate(), ו-group_by() עם summarize() של dplyr.
- Merge ו-Joinsשילוב data frames לפי מפתח משותף: merge() ל-inner, left, right ו-full joins, שמות מפתח שונים עם by.x/by.y, משפחת ה-joins של dplyr, ו-rbind() לערימת שורות.
- Pivot (שינוי צורה)פורמט נתונים רחב מול ארוך ואיך להמיר ביניהם: pivot_longer() ו-pivot_wider() של tidyr, השמות הישנים spread/gather, ו-reshape() של R הבסיסי.
Import & Export
- קריאת CSVאיך מייבאים קובצי CSV ל-R עם read.csv(): הארגומנטים שחשובים, המלכודת של תיקיית העבודה שגורמת לרוב הכישלונות, ומתי readr::read_csv שווה את זה.
- קריאת ExcelR לא יכולה לפתוח קובצי .xlsx בעצמה, והחבילה readxl משלימה את החסר. איך קוראים גיליונות, טווחים וכותרות, איך כותבים Excel בחזרה, ואיך מתחמקים מהמלכודות הקלאסיות של ייבוא מ-Excel.
- כתיבת CSV ו-RDSייצוא מ-R: write.csv עם row.names = FALSE (תמיד), write.table למפרידים אחרים, ו-saveRDS לשמירה וטעינה בלי לאבד את הסוגים שלכם.
- תאריכיםהמחלקה Date של R היא ספירת ימים בתחפושת. איך מפענחים מחרוזות עם as.Date, מעצבים תאריכים לפלט, מחסירים אותם, בונים רצפים, ומתי צריך POSIXct במקום.
Plots & Charts
- plot()איך הפונקציה plot() של R עובדת: סוגי גרפים, כותרות ותוויות צירים, צבעים, סמלי נקודות (pch), שכבות עם lines() ו-abline(), ומקראות.
- היסטוגרמהאיך יוצרים היסטוגרמה ב-R עם hist(): בחירת breaks, עיצוב העמודות, מעבר לסקאלת צפיפות, הוספת עקומה נורמלית, והגרסה של ggplot2.
- Boxplotאיך יוצרים box plot ב-R עם boxplot(): קריאת הקופסה והשפמים, ממשק הנוסחה להשוואה בין קבוצות, עיצוב, ומציאת המספרים שמאחורי הגרף.
- תרשים פיזוראיך יוצרים תרשים פיזור ב-R: משרטטים שני משתנים עם plot(), מוסיפים קו רגרסיה עם abline(lm()), מחליקים עם lowess(), ובונים מטריצה עם pairs().
- תרשים עמודותאיך יוצרים תרשים עמודות ב-R עם barplot(): מווקטור עם שמות או מ-table(), עמודות מקובצות ומוערמות ממטריצה, עיצוב, ו-geom_col מול geom_bar.
- ggplot2איך ggplot2 עובדת: המודל המנטלי של data + aes() + geom, מיפוי מול הגדרה של אסתטיקות, labs(), facet_wrap(), ערכות עיצוב ושמירת גרפים עם ggsave().
Statistics
- סטטיסטיקה תיאוריתאיך מסכמים נתונים ב-R: mean(), median(), sd(), var(), summary(), quantile(). מה כל אחת מחשבת, פרט ה-n−1 שמאחורי sd(), ולמה mode() של R היא מלכודת.
- מתאםמדדו כמה שני משתנים נעים יחד עם cor(), בדקו אם הקשר אמיתי עם cor.test(), וסרקו משתנים רבים בבת אחת בעזרת מטריצת מתאם.
- מבחן Tאיך מריצים מבחני t למדגם אחד, לשני מדגמים ולמדגמים מזווגים עם t.test(), והחלק שבאמת חשוב: איך קוראים כל שורה בפלט: t, df, p-value, רווח סמך.
- ANOVAהשוו ממוצעים של שלוש קבוצות או יותר עם aov(), קראו את טבלת ה-ANOVA תא אחר תא, וגלו אילו קבוצות באמת שונות זו מזו עם TukeyHSD().
- רגרסיה לינאריתהתאימו רגרסיה עם lm(), קראו כל בלוק של summary(): מקדמים, שגיאות תקן, ערכי p, R-squared וסטטיסטי F, וחזו ערכים חדשים עם predict().
- רגרסיה לוגיסטיתמדלו תוצאות של כן/לא עם glm(family = binomial): קראו את ה-summary, המירו מקדמי log-odds ליחסי סיכויים עם exp(), וקבלו הסתברויות חזויות בדרך הנכונה.
- רווחי סמךחשבו רווחי סמך לממוצעים, לפרופורציות ולמקדמי מודל עם t.test(), prop.test() ו-confint(), והבינו מה באמת אומר "ביטחון של 95%" ואיך גודל המדגם קובע את הרוחב.
- מספרים אקראייםאיך מייצרים נתונים אקראיים עם rnorm(), runif(), rbinom() ו-sample(), איך הופכים אותם לניתנים לשחזור עם set.seed(), ואיך מפענחים את שיטת השמות d/p/q/r של ההתפלגויות ב-R.