iT邦幫忙

2023 iThome 鐵人賽

DAY 11
0

如果你正在學習使用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()這個函數如何使用


上一篇
[Day 10] R語言melt()與dcast()函數使用
下一篇
[Day 12] R語言dplyr套件介紹(2)
系列文
30天成為資料分析師-手把手R語言與資料分析教學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
obarisk
iT邦研究生 1 級 ‧ 2023-09-12 08:59:41

可以換到 R 內建的 pipe 函數 |> 了

我要留言

立即登入留言