# 周次:w8
# 任務:認識常用內建函數
# 姓名:黃子騏
# 日期:2021年03月24日
## 題組一 數值向量函數
# 檢視r內建資料集
# data()
# 叫出women資料集(美國女性的平均身高、體重)
data(women)
# 檢視資料集
# View(women)
str(women)
## 'data.frame':    15 obs. of  2 variables:
##  $ height: num  58 59 60 61 62 63 64 65 66 67 ...
##  $ weight: num  115 117 120 123 126 129 132 135 139 142 ...
## 'data.frame':    15 obs. of  2 variables:
##  $ height: num  58 59 60 61 62 63 64 65 66 67 ...
##  $ weight: num  115 117 120 123 126 129 132 135 139 142 ...
names(women)
## [1] "height" "weight"
## [1] "height" "weight"
head(women)
##   height weight
## 1     58    115
## 2     59    117
## 3     60    120
## 4     61    123
## 5     62    126
## 6     63    129
##   height weight
## 1     58    115
## 2     59    117
## 3     60    120
## 4     61    123
## 5     62    126
## 6     63    129
tail(women)
##    height weight
## 10     67    142
## 11     68    146
## 12     69    150
## 13     70    154
## 14     71    159
## 15     72    164
##    height weight
## 10     67    142
## 11     68    146
## 12     69    150
## 13     70    154
## 14     71    159
## 15     72    164
nrow(women)
## [1] 15
## [1] 15
names(women)
## [1] "height" "weight"
## [1] "height" "weight"
# 建立一個物件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] 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
##  [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
##  [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
##  [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)
# View(iris)
iris$Petal.Length
##   [1] 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 1.5 1.6 1.4 1.1 1.2 1.5 1.3 1.4
##  [19] 1.7 1.5 1.7 1.5 1.0 1.7 1.9 1.6 1.6 1.5 1.4 1.6 1.6 1.5 1.5 1.4 1.5 1.2
##  [37] 1.3 1.4 1.3 1.5 1.3 1.3 1.3 1.6 1.9 1.4 1.6 1.4 1.5 1.4 4.7 4.5 4.9 4.0
##  [55] 4.6 4.5 4.7 3.3 4.6 3.9 3.5 4.2 4.0 4.7 3.6 4.4 4.5 4.1 4.5 3.9 4.8 4.0
##  [73] 4.9 4.7 4.3 4.4 4.8 5.0 4.5 3.5 3.8 3.7 3.9 5.1 4.5 4.5 4.7 4.4 4.1 4.0
##  [91] 4.4 4.6 4.0 3.3 4.2 4.2 4.2 4.3 3.0 4.1 6.0 5.1 5.9 5.6 5.8 6.6 4.5 6.3
## [109] 5.8 6.1 5.1 5.3 5.5 5.0 5.1 5.3 5.5 6.7 6.9 5.0 5.7 4.9 6.7 4.9 5.7 6.0
## [127] 4.8 4.9 5.6 5.8 6.1 6.4 5.6 5.1 5.6 6.1 5.6 5.5 4.8 5.4 5.6 5.1 5.1 5.9
## [145] 5.7 5.2 5.0 5.2 5.4 5.1
##   [1] 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 1.5 1.6 1.4 1.1 1.2 1.5 1.3 1.4
##  [19] 1.7 1.5 1.7 1.5 1.0 1.7 1.9 1.6 1.6 1.5 1.4 1.6 1.6 1.5 1.5 1.4 1.5 1.2
##  [37] 1.3 1.4 1.3 1.5 1.3 1.3 1.3 1.6 1.9 1.4 1.6 1.4 1.5 1.4 4.7 4.5 4.9 4.0
##  [55] 4.6 4.5 4.7 3.3 4.6 3.9 3.5 4.2 4.0 4.7 3.6 4.4 4.5 4.1 4.5 3.9 4.8 4.0
##  [73] 4.9 4.7 4.3 4.4 4.8 5.0 4.5 3.5 3.8 3.7 3.9 5.1 4.5 4.5 4.7 4.4 4.1 4.0
##  [91] 4.4 4.6 4.0 3.3 4.2 4.2 4.2 4.3 3.0 4.1 6.0 5.1 5.9 5.6 5.8 6.6 4.5 6.3
## [109] 5.8 6.1 5.1 5.3 5.5 5.0 5.1 5.3 5.5 6.7 6.9 5.0 5.7 4.9 6.7 4.9 5.7 6.0
## [127] 4.8 4.9 5.6 5.8 6.1 6.4 5.6 5.1 5.6 6.1 5.6 5.5 4.8 5.4 5.6 5.1 5.1 5.9
## [145] 5.7 5.2 5.0 5.2 5.4 5.1
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
##   [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] "【鮭魚改名潮】「張鮭魚之夢」改不回來 李來希喊救孩子:大人高抬貴手"
## [1] "【鮭魚改名潮】「張鮭魚之夢」改不回來 李來希喊救孩子:大人高抬貴手"
lead
##  [1] "台灣近日掀起「鮭魚之亂」"           "台中一位男大生為了壽司店優惠活動"  
##  [3] "把自己的名字改成「張鮭魚之夢」"     "未料改完名後"                      
##  [5] "男大生發現悲劇已改了3次名"          "讓他崩潰直呼划不來"                
##  [7] "對此"                               "全國公務人員協會前理事長李來希感嘆"
##  [9] "「價值觀錯亂下的羔羊」"             "希望主持政務的大人高抬貴手"        
## [11] "讓他回復原狀"
##  [1] "台灣近日掀起「鮭魚之亂」"           "台中一位男大生為了壽司店優惠活動"  
##  [3] "把自己的名字改成「張鮭魚之夢」"     "未料改完名後"                      
##  [5] "男大生發現悲劇已改了3次名"          "讓他崩潰直呼划不來"                
##  [7] "對此"                               "全國公務人員協會前理事長李來希感嘆"
##  [9] "「價值觀錯亂下的羔羊」"             "希望主持政務的大人高抬貴手"        
## [11] "讓他回復原狀"
# 運用substr函數,擷取標題中的「張鮭魚之夢」5個字
data <- substr(headline,start =8,stop = 14 )
data
## [1] "「張鮭魚之夢」"
## [1] "「張鮭魚之夢」"
# 運用grep函數,搜尋導言中出現幾次鮭魚
salmon <- grep(pattern = "鮭魚",lead)
salmon
## [1] 1 3
## [1] 1 3
length(salmon)
## [1] 2
## [1] 2
# 請將導言中,出現鮭魚的句子篩選出來
lead[grep(lead,pattern = "鮭魚")]
## [1] "台灣近日掀起「鮭魚之亂」"       "把自己的名字改成「張鮭魚之夢」"
## [1] "台灣近日掀起「鮭魚之亂」"       "把自己的名字改成「張鮭魚之夢」"
# 運用sub函數,將導言中的「男大生」替換為「軍校生」
data <- sub(lead,pattern = "男大生",
            replacement = "軍校生")
data
##  [1] "台灣近日掀起「鮭魚之亂」"           "台中一位軍校生為了壽司店優惠活動"  
##  [3] "把自己的名字改成「張鮭魚之夢」"     "未料改完名後"                      
##  [5] "軍校生發現悲劇已改了3次名"          "讓他崩潰直呼划不來"                
##  [7] "對此"                               "全國公務人員協會前理事長李來希感嘆"
##  [9] "「價值觀錯亂下的羔羊」"             "希望主持政務的大人高抬貴手"        
## [11] "讓他回復原狀"
##  [1] "台灣近日掀起「鮭魚之亂」"           "台中一位軍校生為了壽司店優惠活動"  
##  [3] "把自己的名字改成「張鮭魚之夢」"     "未料改完名後"                      
##  [5] "軍校生發現悲劇已改了3次名"          "讓他崩潰直呼划不來"                
##  [7] "對此"                               "全國公務人員協會前理事長李來希感嘆"
##  [9] "「價值觀錯亂下的羔羊」"             "希望主持政務的大人高抬貴手"        
## [11] "讓他回復原狀"
# 運用paste函數,將導言的第一句話和標題連結起來,連結的符號為「!!」
paste(lead[1],headline, sep = "!!")
## [1] "台灣近日掀起「鮭魚之亂」!!【鮭魚改名潮】「張鮭魚之夢」改不回來 李來希喊救孩子:大人高抬貴手"
## [1] "台灣近日掀起「鮭魚之亂」!!【鮭魚改名潮】「張鮭魚之夢」改不回來 李來希喊救孩子:大人高抬貴手"
# 運用 paste0函數,將導言的第一句話和標題連結起來
paste0(lead[1],headline)
## [1] "台灣近日掀起「鮭魚之亂」【鮭魚改名潮】「張鮭魚之夢」改不回來 李來希喊救孩子:大人高抬貴手"
## [1] "台灣近日掀起「鮭魚之亂」【鮭魚改名潮】「張鮭魚之夢」改不回來 李來希喊救孩子:大人高抬貴手"
## 題組三 描述統計函數
# 運用unique函數,找出iris資料集有多少種不同的花萼長度
type <- unique(iris$Sepal.Length)
type
##  [1] 5.1 4.9 4.7 4.6 5.0 5.4 4.4 4.8 4.3 5.8 5.7 5.2 5.5 4.5 5.3 7.0 6.4 6.9 6.5
## [20] 6.3 6.6 5.9 6.0 6.1 5.6 6.7 6.2 6.8 7.1 7.6 7.3 7.2 7.7 7.4 7.9
##  [1] 5.1 4.9 4.7 4.6 5.0 5.4 4.4 4.8 4.3 5.8 5.7 5.2 5.5 4.5 5.3 7.0 6.4 6.9 6.5
## [20] 6.3 6.6 5.9 6.0 6.1 5.6 6.7 6.2 6.8 7.1 7.6 7.3 7.2 7.7 7.4 7.9
length(type)
## [1] 35
## [1] 35
length(unique(iris$Sepal.Length))
## [1] 35
## [1] 35
# 運用mean函數,算出iris花萼寬度的平均
mean(iris$Sepal.Width)
## [1] 3.057333
## [1] 3.057333
# 運用sd函數,算出iris花萼寬度的標準差
sd(iris$Sepal.Width)
## [1] 0.4358663
## [1] 0.4358663
# 運用median函數,找出iris花萼寬度的中位數
median(iris$Sepal.Width)
## [1] 3
## [1] 3
# 運用max, min, range函數,找出iris花萼寬度的最大值與最小值的範圍
max(iris$Sepal.Width)
## [1] 4.4
## [1] 4.4
min(iris$Sepal.Width)
## [1] 2
## [1] 2
range(iris$Sepal.Width,na.rm = TRUE)
## [1] 2.0 4.4
## [1] 2.0 4.4
# 運用sum函數,將所有的花辮長度加總
sum(iris$Petal.Length)
## [1] 563.7
## [1] 563.7# ----------以下為作業練習(請繳交Rpub的連結)----------------------
# 周次:w9
# 任務:資料輸入與輸出
# 姓名:黃子騏
# 日期:2021年3月31日
# ### 常見資料資料平台
# 政府資料開放平台:https://data.gov.tw/
# 臺北市資料大平臺:https://data.taipei/#/
# 內政資料開放平台:https://data.moi.gov.tw/MoiOD/default/Index.aspx
# ### 常見資料庫
# 學術調查研究資料庫:https://srda.sinica.edu.tw/index.php
# 傳播調查資料庫:http://www.crctaiwan.nctu.edu.tw/


### 題組一 csv檔資料輸入與輸出
# 請至政府資料開放平台下載「健保特約機構口罩剩餘數量明細清單」的csv檔
# 網址:https://data.gov.tw/dataset/116285
# 將輸入的csv檔案命名為maskdata
# install.packages("tidyverse")
library(readr)
maskdata <- read_csv("maskdata.csv")
## 
## ── Column specification ────────────────────────────────────────────────────────
## cols(
##   醫事機構代碼 = col_character(),
##   醫事機構名稱 = col_character(),
##   醫事機構地址 = col_character(),
##   醫事機構電話 = col_character(),
##   成人口罩剩餘數 = col_double(),
##   兒童口罩剩餘數 = col_double(),
##   來源資料時間 = col_character()
## )
# 或是直接檔案的存取網路位址
maskdata <- read_csv("https://data.nhi.gov.tw/Datasets/Download.ashx?rid=A21030000I-D50001-001&l=https://data.nhi.gov.tw/resource/mask/maskdata.csv")
## 
## ── Column specification ────────────────────────────────────────────────────────
## cols(
##   醫事機構代碼 = col_character(),
##   醫事機構名稱 = col_character(),
##   醫事機構地址 = col_character(),
##   醫事機構電話 = col_character(),
##   成人口罩剩餘數 = col_double(),
##   兒童口罩剩餘數 = col_double(),
##   來源資料時間 = col_character()
## )
# 檢視資料
# View(maskdata)
names(maskdata)
## [1] "醫事機構代碼"   "醫事機構名稱"   "醫事機構地址"   "醫事機構電話"  
## [5] "成人口罩剩餘數" "兒童口罩剩餘數" "來源資料時間"
nrow(maskdata)
## [1] 5139
# 2. 建一個機構名稱、地址、成人口罩、小孩口罩的新檔案,
# ,命名為mask1並輸出至目前的資料夾

# 先命名、並篩選需要的欄位


# 3. 檢視成人口罩和兒童口罩數量的多寡?


# 4. 超過5000個成人口罩的機構有哪些? 物件名稱為mask5000


# 5. 將超過5000個成人口罩的機構輸出為csv檔,命名為mask5000