-
Notifications
You must be signed in to change notification settings - Fork 23
Expand file tree
/
Copy pathR02_using_r.Rmd
More file actions
197 lines (124 loc) · 9.15 KB
/
R02_using_r.Rmd
File metadata and controls
197 lines (124 loc) · 9.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
```{r include=FALSE}
knitr::opts_chunk$set(cache = T, warning = F, message = FALSE, class.output = "output")
library(knitr)
library(kableExtra)
library(tidyverse)
```
# (PART) R BASIC {.unnumbered}
# Using R {#basic}
本章介紹如何使用 RStudio 編寫和執行 R 程式語言、R語言的基本語法、以及Vector和data.frame資料型態。
## Using RStudio
### 介面概覽
RStudio 的介面主要劃分為四大區塊,各自負責不同功能:
- **左上區(Source/Visual):** 撰寫程式碼及 R Markdown 文件的區域。
- **左下區(Console):** 顯示程式碼執行的即時結果,可直接輸入命令進行互動式操作。
- **右上區(Environment):** 呈現執行過程中產生的變數與資料物件,方便檢查數據內容。
- **右下區(Files/Packages/Help):**
- **Files:** 顯示本機檔案目錄,便於瀏覽資料。
- **Packages:** 列出目前已載入與可用的套件。
- **Help:** 查詢函式與套件說明,方便尋求技術支援。

### 撰寫R Markdown
R Markdown 格式允許作者在同一份文件中同時混合撰寫程式碼與敘述性文字,非常適合用來撰寫技術文件與學術報告。文件中常見的區塊包括:
- **內容區塊(Text Cell):** 使用 Markdown 語法撰寫標題、段落、點列等格式化文字。詳細指令可以參考[rmarkdown-cheatsheet (rstudio.com)](https://www.rstudio.com/wp-content/uploads/2015/02/rmarkdown-cheatsheet.pdf)。這種格式的靈活性和強大功能,使得 R Markdown 成為撰寫技術文檔和學術報告的理想選擇,能夠有效地將敘述性文本與程式碼結果結合,提升文檔的互動性和表達力。
- **程式碼區塊(Code Cell):** 撰寫 R 程式碼,並可直接執行以呈現結果。
### 常用快捷鍵
**程式碼區塊**可以用下列鍵盤指令來新增和執行。
- `Cmd(Ctrl)+Option(Alt)+i` 新增一個程式碼區塊
- `Cmd+Enter` (`Ctrl+Enter` in Window) 執行程式碼區塊中游標所在的那一行指令。
- `Cmd(Ctrl)+Shift+Enter` 執行游標所在的整個程式碼區塊
- 其他常用鍵盤指令 - **註解**:用滑鼠或鍵盤圈選某幾行程式碼後,可用`Cmd(Ctrl)+Shift+c`來將這幾行標記為註解或將其去除註解標記。
::: practice
Practice. 用鍵盤快速鍵新增一個程式碼區塊、輸入以下程式碼並嘗試用鍵盤快速鍵執行。
`a <- c(1, 2, 3, 4, 5)`\
`b <- 4`\
`a*b`
:::
### 安裝與載入第三方套件
- 套件的使用分為「**安裝(`install.packages("pkg_name")`)」**和「**載入(`library(pkg_name)`)」**兩個步驟。
- 通常安裝好R的時候就已經安裝好基本`base`套件。當執行R時便會將base套件**預載**入程式的執行環境中。
- 熱心的R使用者會編寫第三方套件,而第三方套件則可透過 R CRAN 自動安裝。。而**R cran**上的套件我們可以使用`install.packages("package_name")`來自動安裝到我們的電腦中。
***Practice 1.*** 執行以下程式碼
```{r eval=FALSE}
install.packages("tidyverse")
install.packages("jsonlite")
install.packages("httr")
```
**載入套件。**在安裝這些第三方套件之後,需要將它們載入到程式的運行環境中,然後才能使用。因此,需要使用 **`library(package_name)`** 命令來載入它們。
```{r eval=FALSE}
library(tidyverse)
library(jsonlite)
library(httr)
```
### R 預載套件介紹
當 R 的程式開始執行時,會預載入一些基本的套件,包括 **`stats`**、**`graphics`**、**`grDevices`**、**`utils`** 和 **`datasets`**。這些套件為 R 提供了基本的數據處理、統計分析、圖形顯示和檔案處理等功能。以下是這些套件的重要函式:
- **`stats`**:這個套件包含了許多統計分析相關的函式,例如假設檢定、方差分析、線性迴歸和時間序列分析等。其中,比較常用的函式有 **`t.test()`**、**`lm()`**、**`glm()`**、**`anova()`**、**`cor()`** 等。
- **`graphics`**:這個套件提供了用於繪製各種圖形的函式,例如散佈圖、直方圖、盒鬚圖、線圖、散點矩陣等。其中,常用的函式有 **`plot()`**、**`hist()`**、**`boxplot()`**、**`lines()`**、**`points()`** 等。
- **`grDevices`**:這個套件包含了用於輸出圖形的函式,例如 **`pdf()`**、**`png()`**、**`jpeg()`** 和 **`tiff()`** 等。
- **`utils`**:這個套件包含了一些實用的函式,例如 **`install.packages()`**、**`help()`**、**`data()`** 等。
- **`datasets`**:這個套件包含了一些內建的數據集,可以用來進行測試和練習,例如 **`iris`**、**`mtcars`**、**`CO2`** 等。可以使用 **`data()`** 函式載入這些數據集。
### 程式碼註解技巧
下列程式碼中開頭有`#`符號者為註解,程式設計師用這種註解來為程式碼做說明,便於自己日後閱讀或與他人溝通。程式在執行時會自動忽略前面有`#`符號的程式碼。如果要執行以下程式碼,要把前面的`#`記號給拿掉。在RStudio中你可以用滑鼠或鍵盤圈選下三行,然後用快速鍵`command(ctrl)+shift+c`就可以開關(Comment/Un-comment)這幾行程式碼。
```{r}
# a <- c(1, 2, 3, 4, 5)
# b <- 4
# a*b
```
## Practical Examples
本節將透過實作範例,展示如何使用 R 讀取線上資料並進行基本資料操作。
### 從內政部開放資料讀取資料
MOS(Ministry of the Interior): 中華民國行政院內政部
```{r}
library(httr)
library(jsonlite)
url <- "https://www.ris.gov.tw/rs-opendata/api/v1/datastore/ODRP024/107?page=1"
first_page <- fromJSON(content(GET(url), "text"))
# head(first_page$responseData)
head(first_page$responseData) # %>% View
```
### 取得臺北 YouBike (v2) 即時資料
以下範例從臺北市資料大平臺下載 YouBike 即時資訊,並檢視前六欄資料
```{r}
url <- "https://tcgbusfs.blob.core.windows.net/dotapp/youbike/v2/youbike_immediate.json"
ubike.df <- fromJSON(content(GET(url),"text", encoding = "utf-8"))
head(ubike.df) %>% select(1:6)
# ubike.df # %>% View
```
- 觀察[臺北市資料大平臺 (data.taipei)](https://data.taipei/dataset?qs=youbike)上關於Youbike的資料,你認為哪些資料是具有資料新聞價值的?
- [YouBike區域互補站點](https://data.taipei/dataset/detail?id=fe8a0ddd-6f70-4e63-92a1-a3463c790a1b)
- [YouBike站位每月熱門站點](https://data.taipei/dataset/detail?id=9e97cd13-c21a-44a1-80e8-069bf1c7517c)
- [YouBike場站建置成本](https://data.taipei/dataset/detail?id=e521c4cb-8f72-4cd4-a53d-9bbe6fff2137)
- [YouBike臺北市權利金與補助支出](https://data.taipei/dataset/detail?id=25da6e50-a955-4281-93be-921b4ff75e28)
- [YouBike臺北市站位每月使用量](https://data.taipei/dataset/detail?id=d8cefb03-aba2-41ca-9996-d8774313cdc6)
- [YouBike起訖站點統計](https://data.taipei/dataset/detail?id=c7dbdb7c-6bbd-495a-bd23-49b22defd83e)
- [YouBike見車率統計](https://data.taipei/dataset/detail?id=ba0dafae-043c-4730-b97e-2defd7af766c)
- [YouBike潛在需求預測](https://data.taipei/dataset/detail?id=1aae7069-cb8d-4e6e-a0e3-83dd296d29b8)
- [YouBike2.0臺北市公共自行車即時資訊](https://data.taipei/dataset/detail?id=c6bc8aed-557d-41d5-bfb1-8da24f78f2fb)
### 讀取臺北住宅竊盜點位資訊
使用 `read_json()` 讀取臺北市住宅竊盜點位資訊的 API 資料,並利用 `dplyr` 檢視資料結構。該資料網址可到[臺北市資料大平臺 (data.taipei)](https://data.taipei/)上查詢「住宅竊盜點位資訊」後,點選「API」後複製取得。
```{r eval=FALSE}
url <- "https://data.taipei/api/v1/dataset/93d9bc2d-af08-4db7-a56b-9f0a49226fa3?scope=resourceAquire"
res <- read_json(url, simplifyVector = T)
df <- res$result$results
head(df)
dplyr::glimpse(df)
```
## Q&A
### 編碼與語系設定
在處理含有中文資料時,可能會遇到編碼問題,可透過 `Sys.setlocale()` 指定適當的語系:
```{r eval=FALSE}
Sys.setlocale(category = "LC_ALL", locale = "UTF-8")
Sys.setlocale(category = "LC_ALL", locale = "cht")
```
如果讀取到資料有中文的話,此時,你只需要指定`locale`為`cht`,然後重開該`data.frame`就可以解決該問題。
```{r eval=FALSE}
Sys.setlocale(category = "LC_ALL", locale = "cht")
```
若在使用 `rvest` 套件解析 HTML 時遇到編碼問題,則可將語系設定為 C(代表 C 語言的預設語系):
```{r eval=FALSE}
Sys.setlocale(category = "LC_ALL", locale = "C")
```
- 參考連結:[R: Query or Set Aspects of the Locale](https://stat.ethz.ch/R-manual/R-devel/library/base/html/locales.html)
- The locale describes aspects of the internationalization of a program. Initially most aspects of the locale of R are set to "C" (which is the default for the C language and reflects North-American usage)
### RMD/R Notebook無法儲存
R Notebook 要存檔的時候檔名絕對不要有空白,若有空白就用底線`_`代替,否則Notebook寫到一半會無法預覽下半部的程式並出現錯誤訊息。若仍然無法儲存或出現錯誤訊息,應該只要開另外一個R Notebook檔案,複製程式碼即可。