所涉及的函數(shù)
Mutating Joins:
inner_join()
,left_join()
,right_join()
,full_join()
Filtering Joins:
semi_join()
,anti_join()
深入了解學(xué)習(xí)的內(nèi)容
- 《R for data science》
- Relational Data
- gganimate 作者用來制作動圖的包
數(shù)據(jù)類型
x <- tribble(
~key, ~val_x,
1, "x1",
2, "x2",
3, "x3")
y <- tribble(
~key, ~val_y,
1, "y1",
2, "y2",
4, "y3")
y1 <- tribble(
~key, ~val_y,
1, "y1",
2, "y2",
4, "y4",
2, "y5")
合并連接
內(nèi)連接
inner_join 函數(shù)
- 內(nèi)連接的結(jié)果是一個新數(shù)據(jù)框剥槐,其中包含鍵焦辅、 x 值和 y 值。我們使用 by 參數(shù)告訴 dplyr 哪個變量是鍵:
x %>% inner_join(y, by = "key")
# A tibble: 2 x 3
key val_x val_y
<dbl> <chr> <chr>
1 1 x1 y1
2 2 x2 y2
外連接
- 內(nèi)連接保留同時存在于兩個表中的觀測霞幅, 外連接則保留至少存在于一個表中的觀測娩脾。外連
接有 3 種類型赵誓。
? 左連接:保留 x 中的所有觀測。
? 右連接:保留 y 中的所有觀測
? 全連接:保留 x 和 y 中的所有觀測柿赊。
left_join函數(shù)
- 左連接:保留 x 中的所有觀測俩功。
> left_join(x, y, by = "key")
# A tibble: 3 x 3
key val_x val_y
<dbl> <chr> <chr>
1 1 x1 y1
2 2 x2 y2
3 3 x3 NA
如果x中的key變量,在y中有多個同樣的key碰声,那么所有的結(jié)合可能都會羅列出來
> left_join(x, y1, by = "key")
# A tibble: 4 x 3
key val_x val_y
<dbl> <chr> <chr>
1 1 x1 y1
2 2 x2 y2
3 2 x2 y5
4 3 x3 NA
right_join函數(shù)
- 右連接:保留 y 中的所有觀測
> right_join(x, y, by = "key")
# A tibble: 3 x 3
key val_x val_y
<dbl> <chr> <chr>
1 1 x1 y1
2 2 x2 y2
3 4 NA y3
full_join函數(shù)
- 全連接:保留 x 和 y 中的所有觀測诡蜓。
> full_join(x, y, by = "key")
# A tibble: 4 x 3
key val_x val_y
<dbl> <chr> <chr>
1 1 x1 y1
2 2 x2 y2
3 3 x3 NA
4 4 NA y3
使用維恩圖表示不同類型連接方式
dplyr中這些連接函數(shù)對應(yīng)基礎(chǔ)函數(shù)merge中的功能表
dplyr這幾種函數(shù)的來源SQL中對應(yīng)的功能
篩選連接
- 篩選連接匹配觀測的方式與合并連接相同,但前者影響的是觀測胰挑,而不是變量蔓罚。篩選連接
有兩種類型。
? semi_join(x, y): 保留 x 表中與 y 表中的觀測相匹配的所有觀測瞻颂。
? anti_join(x, y): 丟棄 x 表中與 y 表中的觀測相匹配的所有觀測豺谈。
semi_join函數(shù)
- 保留 x 表中與 y 表中的觀測相匹配的所有觀測
> semi_join(x, y, by = "key")
# A tibble: 2 x 2
key val_x
<dbl> <chr>
1 1 x1
2 2 x2
anti_join函數(shù)
- 丟棄 x 表中與 y 表中的觀測相匹配的所有觀測。
> anti_join(x, y, by = "key")
# A tibble: 1 x 2
key val_x
<dbl> <chr>
1 3 x3
參考博文:
圖中g(shù)if文件來源贡这,tiwtter上逛#rstat(類似微博話題)專題時看到的大神的操作
https://github.com/gadenbuie/tidy-animated-verbs#relational-data
參考書籍
英文版:《R for data science》
中文版:《R數(shù)據(jù)科學(xué)》