יצירת מסגרות נתונים
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-R של Coddy. שיעור 42 מתוך 64.
data frame הוא הטבלה של R: כל עמודה היא וקטור מסוג משלה, ולכל העמודות אותו אורך, ערך אחד בכל שורה. data.frame() בונה אחת מווקטורים בעלי שמות:
people <- data.frame(
name = c("ada", "bo", "cy"),
age = c(36, 22, 41),
city = c("london", "paris", "rome")
)
print(people)פלט:
name age city
1 ada 36 london
2 bo 22 paris
3 cy 41 romenrow() ו-ncol() מחזירות את הגודל, ו-names() מציגה את שמות העמודות. בניגוד למטריצה, העמודות יכולות להכיל טיפוסים שונים: כאן טקסט ומספרים.
people <- data.frame(
name = c("ada", "bo", "cy"),
age = c(36, 22, 41),
city = c("london", "paris", "rome")
)
print(nrow(people))
print(ncol(people))
print(names(people))פלט:
[1] 3
[1] 3
[1] "name" "age" "city"str() מציגה את הסוג ואת הערכים הראשונים של כל עמודה, וזו דרך מהירה לבדוק מה מכילה מסגרת נתונים:
people <- data.frame(
name = c("ada", "bo", "cy"),
age = c(36, 22, 41),
city = c("london", "paris", "rome")
)
str(people)פלט:
'data.frame': 3 obs. of 3 variables:
$ name: chr "ada" "bo" "cy"
$ age : num 36 22 41
$ city: chr "london" "paris" "rome"נתונים מגיעים לעיתים קרובות כטקסט, עם שורה אחת בכל שורה. read.csv(text = lines) הופכת שורות כאלה למסגרת נתונים, משתמשת בשורה הראשונה כשמות העמודות וממירה מספרים באופן אוטומטי:
lines <- c("item,qty", "tea,2", "jam,5")
orders <- read.csv(text = lines)
print(orders)
print(sum(orders$qty))פלט:
item qty
1 tea 2
2 jam 5
[1] 7אתגר
קלהשלימו את table_info(names, ages). צרו מסגרת נתונים עם העמודות name ו-age מתוך שני הווקטורים. החזירו שלוש שורות: Rows: עם מספר השורות, Columns: עם שמות העמודות המחוברים באמצעות , , ו-Oldest: עם השם שבשורה שבה הגיל הוא הגדול ביותר (הראשון כשיש גילאים זהים).
הקוד שסופק קורא את השמות ואת הגילאים כשתי שורות המופרדות בפסיקים ומדפיס כל שורה שהוחזרה.
נסו בעצמכם
table_info <- function(names, ages) {
# כתבו את הקוד שלכם כאן
character(0)
}
# קוד קלט/פלט שסופק: השאירו אותו כפי שהוא
input <- suppressWarnings(readLines(file("stdin")))
cat(table_info(strsplit(input[1], ",")[[1]], as.numeric(strsplit(input[2], ",")[[1]])), sep = "\n")
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1מחרוזות לעומק
תת־מחרוזות עם substr()עיצוב עם sprintf()פיצול וחיבורחיפוש במחרוזותהחלפת טקסטסיכום – בונה שמות משתמש4מטריצות
יצירת מטריצותאינדוקס מטריצותסיכומי שורות ועמודותאריתמטיקה של מטריצותסיכום – תרשים מקומות ישיבהתרגלו בעצמכם: קומפיילר R אונליין