-
Notifications
You must be signed in to change notification settings - Fork 10
/
intro_2_dplyr.Rmd
143 lines (100 loc) · 2.22 KB
/
intro_2_dplyr.Rmd
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
---
title: "tidyverse: dplyr"
author: 郭耀仁
output:
revealjs::revealjs_presentation:
theme: black
highlight: zenburn
center: true
---
# dplyr 套件
## 超級受歡迎
- 包含於 tidyverse 之中
- 類似 SQL 查詢的功能
- 搭配 `%>%` 運算子做 Chaining
## 常用的 dplyr 函數
|函數|用途|
|:----|:----|
|`filter()`|觀測值(列)選擇|
|`select()`|變數(欄)選擇|
|`mutate()`|新增變數(欄)|
|`arrange()`|排序|
|`summarise()`|聚合|
|`group_by()`|分組|
## 檢視練習資料
```{r}
load(url("https://storage.googleapis.com/r_rookies/straw_hat_df.RData"))
```
```{r eval=FALSE}
View(straw_hat_df)
dim(straw_hat_df)
summary(straw_hat_df)
```
## `filter()`
- 選出女性船員
```{r message=FALSE}
library(tidyverse)
straw_hat_df %>%
filter(gender == "Female")
```
## 篩選兩個或更多條件
- 選出女性船員並且年紀大於等於 30 歲
```{r}
straw_hat_df %>%
filter(gender == "Female" & age >= 30)
```
## `select()`
- 選擇資料框中的變數
```{r}
straw_hat_df %>%
select(name, gender)
```
## 整合 filter 與 select
```{r}
# 選出女性船員,但只回傳 name 變數
straw_hat_df %>%
filter(gender == "Female") %>%
select(name)
```
## `mutate()`
- 新增兩年前的年紀
- 利用 `age` 減去 2
```{r}
straw_hat_df %>%
mutate(age_2yr_ago = age - 2)
```
## `arrange()`
- 以 `age` 排序
```{r}
straw_hat_df %>%
arrange(age) # 或使用看看 desc(age)
```
## `summarise()`
- 計算聚合變數平均年齡 `mean_age`
```{r}
straw_hat_df %>%
summarise(mean_age = mean(age))
```
## `group_by()`
- 依照性別計算平均年齡 `mean_age`
```{r}
straw_hat_df %>%
group_by(gender) %>%
summarise(mean_age = mean(age))
```
# 隨堂練習
## 練習資料集
```{r eval=FALSE}
install.packages("gapminder")
```
```{r}
library(gapminder)
View(gapminder)
```
## 篩選出台灣
## 篩選出台灣之後選擇 year、lifeExp、gdpPercap 變數
## 以 year 與 country 排序
## 新增變數 pop_in_million 改以百萬人為單位
## 2007 年全球總人口數為多少?以百萬人為單位
## 承上,各洲總人口數分別為多少?以百萬人為單位
## 延續上題,那麼各洲平均 lifeExp、平均 gdpPercap 為何?