# 請勿更動此 code chunk
library(tibble)
<- as_tibble(ToothGrowth)
df df
#> # A tibble: 60 x 3
#> len supp dose
#> <dbl> <fct> <dbl>
#> 1 4.2 VC 0.5
#> 2 11.5 VC 0.5
#> 3 7.3 VC 0.5
#> 4 5.8 VC 0.5
#> 5 6.4 VC 0.5
#> 6 10 VC 0.5
#> 7 11.2 VC 0.5
#> 8 11.2 VC 0.5
#> 9 5.2 VC 0.5
#> 10 7 VC 0.5
#> # … with 50 more rows
此題使用的是 R 的內建資料 ToothGrowth
,請使用 ?ToothGrowth
閱讀此資料集的說明,並使用上課講到的指令 (e.g. dim()
, glimpse()
, View()
, …) 幫助自己熟悉這份資料。
請從 df
中 (1) 篩選出 supp
變項為 VC
的所有觀察值,並 (2) 只保留 len
與 supp
這兩個變項。
# Write your code here
subset(df, supp == "VC")[ ,1:2]
# should print out:
#> # A tibble: 30 x 2
#> len supp
#> <dbl> <fct>
#> 1 4.2 VC
#> 2 11.5 VC
#> 3 7.3 VC
#> 4 5.8 VC
#> 5 6.4 VC
#> 6 10 VC
#> 7 11.2 VC
#> 8 11.2 VC
#> 9 5.2 VC
#> 10 7 VC
#> # … with 20 more rows
#> # A tibble: 30 x 2
#> len supp
#> <dbl> <fct>
#> 1 4.2 VC
#> 2 11.5 VC
#> 3 7.3 VC
#> 4 5.8 VC
#> 5 6.4 VC
#> 6 10 VC
#> 7 11.2 VC
#> 8 11.2 VC
#> 9 5.2 VC
#> 10 7 VC
#> # … with 20 more rows
請從 df
中篩選出 (1) supp
變項為 VC
且 (2) len
小於 25 的所有觀察值。
# Write your code here
subset(df, supp == "VC" & len < 25)
# should print out:
#> # A tibble: 24 x 3
#> len supp dose
#> <dbl> <fct> <dbl>
#> 1 4.2 VC 0.5
#> 2 11.5 VC 0.5
#> 3 7.3 VC 0.5
#> 4 5.8 VC 0.5
#> 5 6.4 VC 0.5
#> 6 10 VC 0.5
#> 7 11.2 VC 0.5
#> 8 11.2 VC 0.5
#> 9 5.2 VC 0.5
#> 10 7 VC 0.5
#> # … with 14 more rows
#> # A tibble: 24 x 3
#> len supp dose
#> <dbl> <fct> <dbl>
#> 1 4.2 VC 0.5
#> 2 11.5 VC 0.5
#> 3 7.3 VC 0.5
#> 4 5.8 VC 0.5
#> 5 6.4 VC 0.5
#> 6 10 VC 0.5
#> 7 11.2 VC 0.5
#> 8 11.2 VC 0.5
#> 9 5.2 VC 0.5
#> 10 7 VC 0.5
#> # … with 14 more rows
請從 df
中篩選出 len + 15 * dose
大於 40 的所有觀察值。
# Write your code here
subset(df, (len + 15 * dose) > 40)
# should print out:
#> # A tibble: 24 x 3
#> len supp dose
#> <dbl> <fct> <dbl>
#> 1 23.6 VC 2
#> 2 18.5 VC 2
#> 3 33.9 VC 2
#> 4 25.5 VC 2
#> 5 26.4 VC 2
#> 6 32.5 VC 2
#> 7 26.7 VC 2
#> 8 21.5 VC 2
#> 9 23.3 VC 2
#> 10 29.5 VC 2
#> # A tibble: 24 x 3
#> len supp dose
#> <dbl> <fct> <dbl>
#> 1 23.6 VC 2
#> 2 18.5 VC 2
#> 3 33.9 VC 2
#> 4 25.5 VC 2
#> 5 26.4 VC 2
#> 6 32.5 VC 2
#> 7 26.7 VC 2
#> 8 21.5 VC 2
#> 9 23.3 VC 2
#> 10 29.5 VC 2
#> # … with 14 more rows
下方的 member
是實習課使用過的例子。在這題,你的任務是撰寫一個函數 n_years_later()
用來將 member
裡面的成員增加或減少歲數。 n_years_later()
有兩個參數:
member_data
: list,傳入的 member 資料years
: integer, 要增加或減少的歲數n_years_later()
所回傳的資料跟原本傳入 member_data
參數的資料結構是一樣的,唯一的差別在於原本資料中的 age
會依據傳入 years
參數的值進行更新。
提示:
修改 list 裡面元素的語法與 vector 類似:
<- list(
lst list(first = "Tiger")
)
lst
1]]$first <- "Pooh"
lst[[ lst
#> [[1]]
#> [[1]]$first
#> [1] "Tiger"
#>
#>
#> [[1]]
#> [[1]]$first
#> [1] "Pooh"
撰寫 n_years_later()
時,需要使用到 for 迴圈或是 lapply()
,不可以一個一個修改
# Data
<- list(
member list(name = "kai", age = 40),
list(name = "pooh", age = 20),
list(name = "tiger", age = 18),
list(name = "piglet", age = 19)
)##### Do Not modify the code above #####
<- function(member_data, years) {
n_years_later # Write your code here
for (i in seq_along(member_data)) {
$age <- member_data[[i]]$age + years
member_data[[i]]
}as.list(member_data)
}
##### Do Not modify the code below #####
5]] <- list(name = "Obama", age = 59)
member[[for (y in -1:1) {
= n_years_later(member, y)
lst print(sapply(lst, function(x) x$age))
}# Should print out:
#> [1] 39 19 17 18 58
#> [1] 40 20 18 19 59
#> [1] 41 21 19 20 60
#> [1] 39 19 17 18 58
#> [1] 40 20 18 19 59
#> [1] 41 21 19 20 60
week3Rclass.csv
,請將此份資料讀進 R 成為一個 data.frame,存入變數 cute_cute
。(可以使用 R 內建函數或 readr
套件)# Write your code here
library(readr)
<- read_csv("~/Downloads/hw4-dina496/week3Rclass.csv") week3Rclass
#>
#> ─ Column specification ────────────────────────────
#> cols(
#> nickname = col_character(),
#> gender = col_double(),
#> grade = col_double(),
#> q_self = col_double(),
#> q_teacher = col_double(),
#> GPA = col_double()
#> )
<- data.frame(week3Rclass)
cute_cute # Do not modify the code below
cute_cute# Should print out
#> # A tibble: 85 x 6
#> nickname gender grade q_self q_teacher GPA
#> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 iakuhs 2 5 60 60 4.2
#> 2 ToMmyDong 1 1 100 100 5
#> 3 s 2 4 60 90 4
#> 4 Jhang 1 4 70 85 3.7
#> 5 Ryan 2 1 80 90 4.05
#> 6 Ycyc 1 4 100 90 4.3
#> 7 Liuba 1 5 85 90 3.13
#> 8 guest001 2 1 80 80 3.2
#> 9 WhaDaFuq 1 1 85 80 2.99
#> 10 irenYujing 2 2 90 90 3.86
#> # … with 75 more rows
#> nickname gender grade q_self q_teacher GPA
#> 1 iakuhs 2 5 60 60.0 4.20
#> 2 ToMmyDong 1 1 100 100.0 5.00
#> 3 s 2 4 60 90.0 4.00
#> 4 Jhang 1 4 70 85.0 3.70
#> 5 Ryan 2 1 80 90.0 4.05
#> 6 Ycyc 1 4 100 90.0 4.30
#> 7 Liuba 1 5 85 90.0 3.13
#> 8 guest001 2 1 80 80.0 3.20
#> 9 WhaDaFuq 1 1 85 80.0 2.99
#> 10 irenYujing 2 2 90 90.0 3.86
#> 11 ying-shu 1 3 90 95.0 3.74
#> 12 genius 2 2 75 95.0 3.00
#> 13 dina 1 1 65 90.0 4.07
#> 14 patricia C 1 2 70 50.0 4.19
#> 15 Evan Huang 2 1 80 90.0 4.18
#> 16 Emily Shih 1 2 80 100.0 4.00
#> 17 Timmy 2 2 90 80.0 3.20
#> 18 Shan 2 4 85 80.0 4.00
#> 19 Shinomiya Kaguya 1 4 100 87.0 4.20
#> 20 seashell 2 2 80 80.0 3.50
#> 21 na 2 1 100 100.0 3.70
#> 22 OhYah 2 3 60 100.0 4.23
#> 23 TAT 1 4 75 70.0 3.00
#> 24 QQQ 0 1 100 100.0 3.30
#> 25 Mictu 2 4 70 100.0 4.30
#> 26 1dai1dai1dai 1 1 87 99.0 4.10
#> 27 Cate 2 4 80 90.0 3.90
#> 28 otterson 1 5 99 75.0 4.30
#> 29 Claire 2 2 75 80.0 3.50
#> 30 NTUST 2 2 80 96.0 3.80
#> 31 Anone Anone 2 4 85 80.0 4.10
#> 32 annann 1 1 87 75.0 4.18
#> 33 Kris 1 2 85 90.0 3.81
#> 34 shinyue 1 4 70 95.0 4.03
#> 35 adam 2 1 100 100.0 3.60
#> 36 Clarissa 1 4 85 100.0 4.30
#> 37 K 2 2 70 90.0 3.00
#> 38 Jerry 2 1 65 80.0 4.00
#> 39 jimmy 2 4 64 80.0 4.06
#> 40 kobayashi rin 1 2 75 90.0 3.33
#> 41 bulahi 2 4 60 80.0 4.10
#> 42 Charles 2 1 61 99.9 3.58
#> 43 meow 1 1 78 89.0 3.90
#> 44 Henry 1 4 80 100.0 3.60
#> 45 ariel 1 2 70 90.0 4.00
#> 46 trumpy 0 4 87 99.0 4.00
#> 47 bolee 2 1 70 90.0 3.13
#> 48 mm 1 1 70 60.0 3.33
#> 49 shawn 1 1 80 100.0 3.80
#> 50 KaiSquare 2 3 90 90.0 3.50
#> 51 SeanN 2 3 80 101.0 3.80
#> 52 amychou 1 4 88 100.0 4.10
#> 53 Chiwawa 2 4 60 100.0 3.99
#> 54 lanhi 2 4 80 99.0 4.20
#> 55 Wu 2 2 60 95.0 3.86
#> 56 Jacky 2 4 50 80.0 3.50
#> 57 meowmeow 1 1 100 100.0 4.30
#> 58 eric 2 1 20 100.0 3.14
#> 59 c 1 2 80 80.0 4.22
#> 60 wu 1 2 80 90.0 4.10
#> 61 bearly 2 5 80 100.0 2.70
#> 62 baek 1 4 70 70.0 4.30
#> 63 Boer 1 4 90 100.0 4.10
#> 64 kappa 1 5 50 99.0 4.20
#> 65 hhr 1 4 80 90.0 4.10
#> 66 Lee 2 4 80 90.0 3.98
#> 67 hhl 1 2 80 100.0 4.11
#> 68 peanutbutter 1 1 60 90.0 2.96
#> 69 sam 2 1 60 100.0 3.90
#> 70 ilovesushi 2 2 87 90.0 3.75
#> 71 rox 2 4 80 90.0 4.00
#> 72 godiclili 2 3 30 80.0 4.25
#> 73 afang 1 5 30 30.0 4.00
#> 74 GodTon 2 5 60 90.0 2.00
#> 75 seaotter 2 5 99 87.0 4.30
#> 76 higannotabihito 2 5 30 87.0 3.50
#> 77 wow 2 2 100 99.0 4.00
#> 78 solid 1 5 85 90.0 3.90
#> 79 87heng87 2 2 20 60.0 4.02
#> 80 super q 2 3 100 100.0 4.29
#> 81 kyaya 1 4 82 93.0 3.90
#> 82 amy 2 3 100 100.0 0.00
#> 83 kkk 1 4 80 90.0 3.70
#> 84 kiki 2 2 10 100.0 5.00
#> 85 KH 2 4 50 100.0 3.70
dplyr
、data.table
) 請修改以下 data frame 的資料:integer
。(Hint: 注意 gender 原本的資料類型是沒有教過的 factor)# Data
= data.frame(
Q_Q nickname = c('SeanN', 'solid', 'wow', '87heng87', 'rox', 'Ycyc'),
gender = c("M", " F", "M", "F", "F", "Stone"),
grade = c(5, 5, 4, 4, 4, 2),
q_self = c(95, 98, 85, 86, 87, 78),
q_teacher = c(95, 98, 85, 86, 87, 87),
GPA = c(4.8, 4.3, 5.2, 5.5, 4.7, 3.8)
)####### Do Not modify the code above #########
# Write your code here
for (i in seq_along(Q_Q$GPA)) {
if (Q_Q$GPA[[i]] > 4.3) {
$GPA[[i]] <- NA
Q_Qelse {
} next
}
}<- levels(Q_Q$gender)
gender.level levels(Q_Q$gender) <- c(gender.level,0,1,2)
for (i in seq_along(Q_Q$gender)) {
if (Q_Q$gender[i] == "M") {
$gender[i] <- 1
Q_Qelse if (Q_Q$gender[i] == "F") {
} $gender[i] <- 2
Q_Qelse {
} $gender[i] <- 0
Q_Q
}
}
# Do Not modify the code below
Q_Q# Should print out
#> nickname gender grade q_self q_teacher GPA
#> 1 SeanN 1 5 95 95 NA
#> 2 solid 0 5 98 98 4.3
#> 3 wow 1 4 85 85 NA
#> 4 87heng87 2 4 86 86 NA
#> 5 rox 2 4 87 87 NA
#> 6 Ycyc 0 2 78 87 3.8
#> nickname gender grade q_self q_teacher GPA
#> 1 SeanN 1 5 95 95 NA
#> 2 solid 0 5 98 98 4.3
#> 3 wow 1 4 85 85 NA
#> 4 87heng87 2 4 86 86 NA
#> 5 rox 2 4 87 87 NA
#> 6 Ycyc 0 2 78 87 3.8
dplyr
、data.table
) 請在 cute_cute
這個 data frame 裡新增一個 column favorite_word
(不可以使用套件,e.g. dplyr
、data.table
)。在 favorite_word
中:q_self
大於等於 70,favorite_word
的值為 "根本可愛動物區"
q_self
小於 70,favorite_word
的值為 "一代一代"
# Write your code here
for (i in seq_along(cute_cute$q_self)) {
if (cute_cute$q_self[[i]] >= 70) {
$"favorite_word"[[i]] <- "根本可愛動物區"
cute_cuteelse {
} $"favorite_word"[[i]] <- "一代一代"
cute_cute
}
}# Do not modify the code below
cute_cute# Should print out
#> # A tibble: 85 x 7
#> nickname gender grade q_self q_teacher GPA favorite_word
#> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <chr>
#> 1 iakuhs 2 5 60 60 4.2 一代一代
#> 2 ToMmyDong 1 1 100 100 5 根本可愛動物區
#> 3 s 2 4 60 90 4 一代一代
#> 4 Jhang 1 4 70 85 3.7 根本可愛動物區
#> 5 Ryan 2 1 80 90 4.05 根本可愛動物區
#> 6 Ycyc 1 4 100 90 4.3 根本可愛動物區
#> 7 Liuba 1 5 85 90 3.13 根本可愛動物區
#> 8 guest001 2 1 80 80 3.2 根本可愛動物區
#> 9 WhaDaFuq 1 1 85 80 2.99 根本可愛動物區
#> 10 irenYujing 2 2 90 90 3.86 根本可愛動物區
#> # … with 75 more rows
#> nickname gender grade q_self q_teacher GPA favorite_word
#> 1 iakuhs 2 5 60 60.0 4.20 一代一代
#> 2 ToMmyDong 1 1 100 100.0 5.00 根本可愛動物區
#> 3 s 2 4 60 90.0 4.00 一代一代
#> 4 Jhang 1 4 70 85.0 3.70 根本可愛動物區
#> 5 Ryan 2 1 80 90.0 4.05 根本可愛動物區
#> 6 Ycyc 1 4 100 90.0 4.30 根本可愛動物區
#> 7 Liuba 1 5 85 90.0 3.13 根本可愛動物區
#> 8 guest001 2 1 80 80.0 3.20 根本可愛動物區
#> 9 WhaDaFuq 1 1 85 80.0 2.99 根本可愛動物區
#> 10 irenYujing 2 2 90 90.0 3.86 根本可愛動物區
#> 11 ying-shu 1 3 90 95.0 3.74 根本可愛動物區
#> 12 genius 2 2 75 95.0 3.00 根本可愛動物區
#> 13 dina 1 1 65 90.0 4.07 一代一代
#> 14 patricia C 1 2 70 50.0 4.19 根本可愛動物區
#> 15 Evan Huang 2 1 80 90.0 4.18 根本可愛動物區
#> 16 Emily Shih 1 2 80 100.0 4.00 根本可愛動物區
#> 17 Timmy 2 2 90 80.0 3.20 根本可愛動物區
#> 18 Shan 2 4 85 80.0 4.00 根本可愛動物區
#> 19 Shinomiya Kaguya 1 4 100 87.0 4.20 根本可愛動物區
#> 20 seashell 2 2 80 80.0 3.50 根本可愛動物區
#> 21 na 2 1 100 100.0 3.70 根本可愛動物區
#> 22 OhYah 2 3 60 100.0 4.23 一代一代
#> 23 TAT 1 4 75 70.0 3.00 根本可愛動物區
#> 24 QQQ 0 1 100 100.0 3.30 根本可愛動物區
#> 25 Mictu 2 4 70 100.0 4.30 根本可愛動物區
#> 26 1dai1dai1dai 1 1 87 99.0 4.10 根本可愛動物區
#> 27 Cate 2 4 80 90.0 3.90 根本可愛動物區
#> 28 otterson 1 5 99 75.0 4.30 根本可愛動物區
#> 29 Claire 2 2 75 80.0 3.50 根本可愛動物區
#> 30 NTUST 2 2 80 96.0 3.80 根本可愛動物區
#> 31 Anone Anone 2 4 85 80.0 4.10 根本可愛動物區
#> 32 annann 1 1 87 75.0 4.18 根本可愛動物區
#> 33 Kris 1 2 85 90.0 3.81 根本可愛動物區
#> 34 shinyue 1 4 70 95.0 4.03 根本可愛動物區
#> 35 adam 2 1 100 100.0 3.60 根本可愛動物區
#> 36 Clarissa 1 4 85 100.0 4.30 根本可愛動物區
#> 37 K 2 2 70 90.0 3.00 根本可愛動物區
#> 38 Jerry 2 1 65 80.0 4.00 一代一代
#> 39 jimmy 2 4 64 80.0 4.06 一代一代
#> 40 kobayashi rin 1 2 75 90.0 3.33 根本可愛動物區
#> 41 bulahi 2 4 60 80.0 4.10 一代一代
#> 42 Charles 2 1 61 99.9 3.58 一代一代
#> 43 meow 1 1 78 89.0 3.90 根本可愛動物區
#> 44 Henry 1 4 80 100.0 3.60 根本可愛動物區
#> 45 ariel 1 2 70 90.0 4.00 根本可愛動物區
#> 46 trumpy 0 4 87 99.0 4.00 根本可愛動物區
#> 47 bolee 2 1 70 90.0 3.13 根本可愛動物區
#> 48 mm 1 1 70 60.0 3.33 根本可愛動物區
#> 49 shawn 1 1 80 100.0 3.80 根本可愛動物區
#> 50 KaiSquare 2 3 90 90.0 3.50 根本可愛動物區
#> 51 SeanN 2 3 80 101.0 3.80 根本可愛動物區
#> 52 amychou 1 4 88 100.0 4.10 根本可愛動物區
#> 53 Chiwawa 2 4 60 100.0 3.99 一代一代
#> 54 lanhi 2 4 80 99.0 4.20 根本可愛動物區
#> 55 Wu 2 2 60 95.0 3.86 一代一代
#> 56 Jacky 2 4 50 80.0 3.50 一代一代
#> 57 meowmeow 1 1 100 100.0 4.30 根本可愛動物區
#> 58 eric 2 1 20 100.0 3.14 一代一代
#> 59 c 1 2 80 80.0 4.22 根本可愛動物區
#> 60 wu 1 2 80 90.0 4.10 根本可愛動物區
#> 61 bearly 2 5 80 100.0 2.70 根本可愛動物區
#> 62 baek 1 4 70 70.0 4.30 根本可愛動物區
#> 63 Boer 1 4 90 100.0 4.10 根本可愛動物區
#> 64 kappa 1 5 50 99.0 4.20 一代一代
#> 65 hhr 1 4 80 90.0 4.10 根本可愛動物區
#> 66 Lee 2 4 80 90.0 3.98 根本可愛動物區
#> 67 hhl 1 2 80 100.0 4.11 根本可愛動物區
#> 68 peanutbutter 1 1 60 90.0 2.96 一代一代
#> 69 sam 2 1 60 100.0 3.90 一代一代
#> 70 ilovesushi 2 2 87 90.0 3.75 根本可愛動物區
#> 71 rox 2 4 80 90.0 4.00 根本可愛動物區
#> 72 godiclili 2 3 30 80.0 4.25 一代一代
#> 73 afang 1 5 30 30.0 4.00 一代一代
#> 74 GodTon 2 5 60 90.0 2.00 一代一代
#> 75 seaotter 2 5 99 87.0 4.30 根本可愛動物區
#> 76 higannotabihito 2 5 30 87.0 3.50 一代一代
#> 77 wow 2 2 100 99.0 4.00 根本可愛動物區
#> 78 solid 1 5 85 90.0 3.90 根本可愛動物區
#> 79 87heng87 2 2 20 60.0 4.02 一代一代
#> 80 super q 2 3 100 100.0 4.29 根本可愛動物區
#> 81 kyaya 1 4 82 93.0 3.90 根本可愛動物區
#> 82 amy 2 3 100 100.0 0.00 根本可愛動物區
#> 83 kkk 1 4 80 90.0 3.70 根本可愛動物區
#> 84 kiki 2 2 10 100.0 5.00 一代一代
#> 85 KH 2 4 50 100.0 3.70 一代一代