# 周次:w8
# 任務:認識常用內建函數
# 姓名:黃子騏
# 日期:2021年3月24日
## 題組一 數值向量函數
# 檢視r內建資料集
data()
# 叫出women資料集(美國女性的平均身高、體重)
data(women)
# 檢視資料集
head(women)
##   height weight
## 1     58    115
## 2     59    117
## 3     60    120
## 4     61    123
## 5     62    126
## 6     63    129
# 建立一個物件bmi,計算美國女性的bmi
bmi <- women$weight / (women$height / 100)^2
bmi
##  [1] 341.8549 336.1103 333.3333 330.5563 327.7836 325.0189 322.2656 319.5266
##  [9] 319.1001 316.3288 315.7439 315.0599 314.2857 315.4136 316.3580
# 1. 取bmi整數,且無條件刪去法
floor(bmi)
##  [1] 341 336 333 330 327 325 322 319 319 316 315 315 314 315 316
# 2. 取bmi整數,且無條件進入法
ceiling(bmi)
##  [1] 342 337 334 331 328 326 323 320 320 317 316 316 315 316 317
# 3. 取bmi至小數點第2位,且四捨五入
round(bmi,digits = 2)
##  [1] 341.85 336.11 333.33 330.56 327.78 325.02 322.27 319.53 319.10 316.33
## [11] 315.74 315.06 314.29 315.41 316.36
# 4. 請將iris資料集的花瓣長度,取整數並四捨五入
data(iris)
names(iris)
## [1] "Sepal.Length" "Sepal.Width"  "Petal.Length" "Petal.Width"  "Species"
round(iris$Petal.Length,digits=0)
##   [1] 1 1 1 2 1 2 1 2 1 2 2 2 1 1 1 2 1 1 2 2 2 2 1 2 2 2 2 2 1 2 2 2 2 1 2 1 1
##  [38] 1 1 2 1 1 1 2 2 1 2 1 2 1 5 4 5 4 5 4 5 3 5 4 4 4 4 5 4 4 4 4 4 4 5 4 5 5
##  [75] 4 4 5 5 4 4 4 4 4 5 4 4 5 4 4 4 4 5 4 3 4 4 4 4 3 4 6 5 6 6 6 7 4 6 6 6 5
## [112] 5 6 5 5 5 6 7 7 5 6 5 7 5 6 6 5 5 6 6 6 6 6 5 6 6 6 6 5 5 6 5 5 6 6 5 5 5
## [149] 5 5
## 題組二 文字向量函數
# 已建立一個物件leadline為新聞標題、lead為新聞導言
headline <- "【鮭魚改名潮】「張鮭魚之夢」改不回來 李來希喊救孩子:大人高抬貴手"
lead <- c("台灣近日掀起「鮭魚之亂」","台中一位男大生為了壽司店優惠活動",
          "把自己的名字改成「張鮭魚之夢」", "未料改完名後", "男大生發現悲劇已改了3次名",
          "讓他崩潰直呼划不來", "對此","全國公務人員協會前理事長李來希感嘆",
          "「價值觀錯亂下的羔羊」","希望主持政務的大人高抬貴手","讓他回復原狀")
headline
## [1] "【鮭魚改名潮】「張鮭魚之夢」改不回來 李來希喊救孩子:大人高抬貴手"
lead
##  [1] "台灣近日掀起「鮭魚之亂」"           "台中一位男大生為了壽司店優惠活動"  
##  [3] "把自己的名字改成「張鮭魚之夢」"     "未料改完名後"                      
##  [5] "男大生發現悲劇已改了3次名"          "讓他崩潰直呼划不來"                
##  [7] "對此"                               "全國公務人員協會前理事長李來希感嘆"
##  [9] "「價值觀錯亂下的羔羊」"             "希望主持政務的大人高抬貴手"        
## [11] "讓他回復原狀"
# 運用substr函數,擷取標題中的「張鮭魚之夢」5個字
data <- substr(headline, start= 8, stop = 14)
data
## [1] "「張鮭魚之夢」"
#也可運用資料框
data <- substr(iris$Species,start = 2,stop=4)
data
##   [1] "eto" "eto" "eto" "eto" "eto" "eto" "eto" "eto" "eto" "eto" "eto" "eto"
##  [13] "eto" "eto" "eto" "eto" "eto" "eto" "eto" "eto" "eto" "eto" "eto" "eto"
##  [25] "eto" "eto" "eto" "eto" "eto" "eto" "eto" "eto" "eto" "eto" "eto" "eto"
##  [37] "eto" "eto" "eto" "eto" "eto" "eto" "eto" "eto" "eto" "eto" "eto" "eto"
##  [49] "eto" "eto" "ers" "ers" "ers" "ers" "ers" "ers" "ers" "ers" "ers" "ers"
##  [61] "ers" "ers" "ers" "ers" "ers" "ers" "ers" "ers" "ers" "ers" "ers" "ers"
##  [73] "ers" "ers" "ers" "ers" "ers" "ers" "ers" "ers" "ers" "ers" "ers" "ers"
##  [85] "ers" "ers" "ers" "ers" "ers" "ers" "ers" "ers" "ers" "ers" "ers" "ers"
##  [97] "ers" "ers" "ers" "ers" "irg" "irg" "irg" "irg" "irg" "irg" "irg" "irg"
## [109] "irg" "irg" "irg" "irg" "irg" "irg" "irg" "irg" "irg" "irg" "irg" "irg"
## [121] "irg" "irg" "irg" "irg" "irg" "irg" "irg" "irg" "irg" "irg" "irg" "irg"
## [133] "irg" "irg" "irg" "irg" "irg" "irg" "irg" "irg" "irg" "irg" "irg" "irg"
## [145] "irg" "irg" "irg" "irg" "irg" "irg"
# 運用grep函數,搜尋導言中出現幾次鮭魚
salmon <- grep(lead,pattern ="鮭魚")
length(salmon)
## [1] 2
# 請將導言中,出現鮭魚的句子篩選出來

# 運用sub函數,將導言中的「男大生」替換為「軍校生」
data <- sub(lead,pattern="男大生",replacement="軍校生")
data
##  [1] "台灣近日掀起「鮭魚之亂」"           "台中一位軍校生為了壽司店優惠活動"  
##  [3] "把自己的名字改成「張鮭魚之夢」"     "未料改完名後"                      
##  [5] "軍校生發現悲劇已改了3次名"          "讓他崩潰直呼划不來"                
##  [7] "對此"                               "全國公務人員協會前理事長李來希感嘆"
##  [9] "「價值觀錯亂下的羔羊」"             "希望主持政務的大人高抬貴手"        
## [11] "讓他回復原狀"
# 運用paste函數,將導言的第一句話和標題連結起來,連結的符號為「!!」
paste(lead[1],headline)
## [1] "台灣近日掀起「鮭魚之亂」 【鮭魚改名潮】「張鮭魚之夢」改不回來 李來希喊救孩子:大人高抬貴手"
# 運用 paste0函數,將導言的第一句話和標題連結起來
paste0(lead[1],headline)
## [1] "台灣近日掀起「鮭魚之亂」【鮭魚改名潮】「張鮭魚之夢」改不回來 李來希喊救孩子:大人高抬貴手"
## 題組三 描述統計函數
# 運用unique函數,找出iris資料集有多少種不同的花萼長度
type <- unique(iris$senal,length)
# 運用mean函數,算出iris花萼寬度的平均

# 運用sd函數,算出iris花萼寬度的標準差

# 運用median函數,找出iris花萼寬度的中位數

# 運用max, min, range函數,找出iris花萼寬度的最大值與最小值的範圍

# 運用sum函數,將所有的花辮長度加總