如果你正在學習使用R語言做資料分析,那你千萬不能錯過dplyr這個套件。dplyr主要使用於dataframe上,可以進行各式各樣的資料前處理,我們就開始介紹這個套件吧!
首先,先來了解dplyr
套件中使用的運算子%>%
,它可以把所有要執行的函數(動作)串起來。
換句話說,假設我們今天想要對一個dataframe
做篩選,再做計算,不需要下兩行指令,只需要用%>%
把它們做連結就可以先後執行。
以下整理一些在dplyr
套件中常用的函數:
select()
:提取要留下的欄位名稱filter()
:過濾要留下的條件group_by()
:將資料分組,分組後通常會搭配mutate()
或summarise()
來做計算mutate()
:用於生成新欄位arrange()
:選擇要以哪些欄位將資料排序summarise()
:可以搭配group_by()
做使用,計算統計值下面我們會先針對前幾個函數來做實例介紹,summarise()
會留到下一篇文章在做更詳細的介紹。
進入實例之前,我們會先建立一組銷售的數據,包含購買人的id、購買商品、商品單價、商品數量。
# 載入套件
library(dplyr)
day11 = data.frame(
customer_id = c(1,1,1,1,2,2,2,3,3),
item = c("milk", "apple", "cookie", "mug",
"mug", "milk", "milk",
"apple", "cookie"),
price = c(10, 12, 7, 20, 10, 10, 12, 7, 2),
count = c(2, 3, 4, 4, 2, 1, 2, 3, 2)
)
# 原始資料
day11
customer_id item price count
1 1 milk 10 2
2 1 apple 12 3
3 1 cookie 7 4
4 1 mug 20 4
5 2 mug 10 2
6 2 milk 10 1
7 2 milk 12 2
8 3 apple 7 3
9 3 cookie 2 2
select()
: 只看客戶的購買數量,不看item, price欄位day11 %>% select(customer_id, count)
customer_id count
1 1 2
2 1 3
3 1 4
4 1 4
5 2 2
6 2 1
7 2 2
8 3 3
9 3 2
filter()
: 只看customer_id = 1的購買明細day11 %>% filter(customer_id == 1)
customer_id item price count
1 1 milk 10 2
2 1 apple 12 3
3 1 cookie 7 4
4 1 mug 20 4
mutate()
:生成新欄位total_cost,表示每次購買的總金額day11 %>% mutate(total_cost = price*count)
customer_id item price count total_cost
1 1 milk 10 2 20
2 1 apple 12 3 36
3 1 cookie 7 4 28
4 1 mug 20 4 80
5 2 mug 10 2 20
6 2 milk 10 1 10
7 2 milk 12 2 24
8 3 apple 7 3 21
9 3 cookie 2 2 4
arrange()
:將購買商品的單價由低到高排序day11 %>% arrange(price)
customer_id item price count
1 3 cookie 2 2
2 1 cookie 7 4
3 3 apple 7 3
4 1 milk 10 2
5 2 mug 10 2
6 2 milk 10 1
7 1 apple 12 3
8 2 milk 12 2
9 1 mug 20 4
group_by()
:計算每個客戶購買的次數day11 %>% group_by(customer_id) %>% mutate(n = n())
customer_id item price count n
1 1 milk 10 2 4
2 1 apple 12 3 4
3 1 cookie 7 4 4
4 1 mug 20 4 4
5 2 mug 10 2 3
6 2 milk 10 1 3
7 2 milk 12 2 3
8 3 apple 7 3 2
9 3 cookie 2 2 2
dplyr
套件的函數今天就介紹到這邊,明天會再進一步介紹summarise()
這個函數如何使用