# 周次:w
# 任務:認識常用內建函數
# 姓名:陳靜君
# 日期:xxxx年xx月xx日
## 題組一 數值向量函數
# 檢視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] "「張鮭魚之夢」"
# 運用grep函數,搜尋導言中出現幾次鮭魚
salmon <- grep(lead,pattern = "鮭魚")
salmon
## [1] 1 3
length(salmon)
## [1] 2
# 請將導言中,出現鮭魚的句子篩選出來
lead[grep(lead,pattern = "鮭魚")]
## [1] "台灣近日掀起「鮭魚之亂」" "把自己的名字改成「張鮭魚之夢」"
# 運用sub函數,將導言中的「男大生」替換為「軍校生」
data <- sub(lead,pattern ="男大生",
replacement = "軍校生")
data
## [1] "台灣近日掀起「鮭魚之亂」" "台中一位軍校生為了壽司店優惠活動"
## [3] "把自己的名字改成「張鮭魚之夢」" "未料改完名後"
## [5] "軍校生發現悲劇已改了3次名" "讓他崩潰直呼划不來"
## [7] "對此" "全國公務人員協會前理事長李來希感嘆"
## [9] "「價值觀錯亂下的羔羊」" "希望主持政務的大人高抬貴手"
## [11] "讓他回復原狀"
# 運用paste函數,將導言的第一句話和標題連結起來,連結的符號為「!!」
paste(lead[1],headline,sep="!!")
## [1] "台灣近日掀起「鮭魚之亂」!!【鮭魚改名潮】「張鮭魚之夢」改不回來 李來希喊救孩子:大人高抬貴手"
# 運用 paste0函數,將導言的第一句話和標題連結起來
paste0(lead[1],headline)
## [1] "台灣近日掀起「鮭魚之亂」【鮭魚改名潮】「張鮭魚之夢」改不回來 李來希喊救孩子:大人高抬貴手"
## 題組三 描述統計函數
# 運用unique函數,找出iris資料集有多少種不同的花萼長度
length(unique(iris$Sepal.Length))
## [1] 35
# 運用mean函數,算出iris花萼寬度的平均
mean(iris$Sepal.Width)
## [1] 3.057333
# 運用sd函數,算出iris花萼寬度的標準差
sd(iris$Sepal.Width)
## [1] 0.4358663
# 運用median函數,找出iris花萼寬度的中位數
median(iris$Sepal.Width)
## [1] 3
# 運用max, min, range函數,找出iris花萼寬度的最大值與最小值的範圍
max(iris$Sepal.Width)
## [1] 4.4
min(iris$Sepal.Width)
## [1] 2
range(iris$Sepal.Width)
## [1] 2.0 4.4
range(iris$Sepal.Width,na.rm = T)
## [1] 2.0 4.4
# 運用sum函數,將所有的花辮長度加總
sum(iris$Petal.Length)
## [1] 563.7
# 周次:w
# 任務:資料輸入與輸出
# 姓名:陳靜君
# 日期:xxxx年xx月xx日
# ### 常見資料資料平台
# 政府資料開放平台: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("readr")
library(readr)
maskdata <- read.csv("maskdata.csv")
# 或是直接檔案的存取網路位址
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] 5121
summary(maskdata)
## 醫事機構代碼 醫事機構名稱 醫事機構地址 醫事機構電話
## Length:5121 Length:5121 Length:5121 Length:5121
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## 成人口罩剩餘數 兒童口罩剩餘數 來源資料時間
## Min. : 0 Min. : 0 Length:5121
## 1st Qu.: 680 1st Qu.: 650 Class :character
## Median : 1370 Median : 1040 Mode :character
## Mean : 1592 Mean : 1010
## 3rd Qu.: 1990 3rd Qu.: 1370
## Max. :16000 Max. :20320
# 2. 建一個機構名稱、地址、成人口罩、小孩口罩的新檔案,
# ,命名為mask1並輸出至目前的資料夾
# 先命名、並篩選需要的欄位
# 3. 檢視成人口罩和兒童口罩數量的多寡?
# 4. 超過5000個成人口罩的機構有哪些? 物件名稱為mask5000
# 5. 將超過5000個成人口罩的機構輸出為csv檔,命名為mask5000
### 題組二 txt檔資料輸入與輸出
## 一、當資料為表格型態(方法與csv方式相同)
# 請至政府資料開放平台下載「國軍臺中總醫院就醫收費標準表」的txt檔
# 網址:https://data.gov.tw/dataset/37783
# 1. 將輸入的txt檔案命名為hospital
# 2. 請將現役軍人、替代役、軍眷的收費標準輸出為txt檔
# 並命名為army
## 二、當資料為非表格型態
# 1. 下載youtube"2020國慶演說"影片的cc字幕,命名為ytword
# 影片網址:https://www.youtube.com/watch?v=87frdlm9ujo
# 利用Youtube 字幕下載器(https://toolbxs.com/zh-TW/downloader/youtube_subtitle)
# 2. 請問演講中分別提及中華民國、台灣幾次?
# 3. 請問演講中如何談中華民國、台灣?
# 4. 請將提及中華民國、台灣的句子輸出為txt檔,檔名為roctw
### 題組三 sav檔(spss的檔案)資料輸入與輸出
# 請至台灣傳播資料庫下載「2019年調查」的sav檔
# 網址:https://data.gov.tw/dataset/116285
# 1. 將輸入的sav檔案命名為tcs2019
# install.packages("sjlabelled")
# 2. 檢視資料
# 當資料較大時,建議使用sjPlot套件
#安裝sjPlot套件家族
# 上網檢視cran檔: https://cran.r-project.org/web/packages/sjPlot/sjPlot.pdf
# install.packages("sjPlot")
# 3. 篩選出變數:性別(a1)、追劇上癮(g5.8,g5.9,g5.14)、
# 電玩上癮(j2.1,j2.2,j2.3),另存為sav檔,並命名為com
# 介紹好用的套件rio
# https://cran.r-project.org/web/packages/rio/rio.pdf
# 參考https://blog.gtwang.org/r/rio-package-import-export-convert-data-files-tutorial/
# install.packages("rio") # install_formats()
### 題組四 JSON檔資料輸入與輸出
# 請至政府資料開放平台下載「年度國內主要經濟指標」的json檔
# 網址:https://data.gov.tw/dataset/130489
# 1. 將輸入的json檔案變成資料框,並命名為eco
# 參考https://blog.gtwang.org/r/jsonlite-json-format-parser-generator-tutorial/
# https://cran.r-project.org/web/packages/jsonlite/jsonlite.pdf
# install.packages("jsonlite")
# 2. 篩選第1-5,16-17欄,輸出為json檔,命名為eco1