在資料分析上,常需要合併多組dataframe
,成為一組完整的資料,今天我們就來介紹dataframe
之間如何進行合併。
最常見的合併套件有兩種,一種是使用原生的套件merge()
,另外一個方法則是使用dplyr
套件中的join
系列函數,下方會針對4種不同的合併方法來進行整理。
舉兩個dataframe
合併為例,其中一個包含商品名稱與商品數量,另一個包含商品名稱與商品價錢,兩個dataframe
共同的欄位名稱為商品名稱,因此在合併時會使用商品名稱當串接的欄位,資料內容如下:
# 商品名稱與商品數量
item_count = data.frame(
item = c("milk", "apple", "cookie", "mug", "beef"),
count = c(2, 3, 4, 6, 5)
)
item_count
item count
1 milk 2
2 apple 3
3 cookie 4
4 mug 6
5 beef 5
# 商品名稱與商品價錢
item_price = data.frame(
item = c("milk", "apple", "cookie", "mug", "fish"),
price = c(10, 12, 7, 20, 30)
)
item_price
item price
1 milk 10
2 apple 12
3 cookie 7
4 mug 20
5 fish 30
inner join
: 只保留兩個dataframe同時有的library(dplyr)
# 使用merge()
merge(x = item_count, y = item_price, by = "item")
# 或使用dplyr套件
item_count %>% inner_join(item_price, by = "item")
item count price
1 apple 3 12
2 cookie 4 7
3 milk 2 10
4 mug 6 20
outer join
: 保留所有(dataframe1+dataframe2)# 使用merge()
merge(x = item_count, y = item_price, by = "item", all=TRUE)
# 或使用dplyr套件
item_count %>% full_join(item_price, by = "item")
item count price
1 milk 2 10
2 apple 3 12
3 cookie 4 7
4 mug 6 20
5 beef 5 NA
6 fish NA 30
left join
: 以dataframe1為基礎(取左邊資料的當key),將datafram2做合併# 使用merge()
merge(x = item_count, y = item_price, by = "item", all.x=TRUE)
# 或使用dplyr套件
item_count %>% left_join(item_price, by = "item")
item count price
1 milk 2 10
2 apple 3 12
3 cookie 4 7
4 mug 6 20
5 beef 5 NA
right join
: 以dataframe2為基礎(取右邊資料的當key),將datafram1做合併# 使用merge()
merge(x = item_count, y = item_price, by = "item", all.y=TRUE)
# 或使用dplyr套件
item_count %>% right_join(item_price, by = "item")
item count price
1 milk 2 10
2 apple 3 12
3 cookie 4 7
4 mug 6 20
5 fish NA 30
以上是常見的4種合併資料方法