美文网首页R语言数据-R语言-图表-决策-Linux-PythonR数据读取 清理
R语言中dplyr包jion函数之目前我看到过的最形象的教程

R语言中dplyr包jion函数之目前我看到过的最形象的教程

作者: 热衷组培的二货潜 | 来源:发表于2018-08-16 14:25 被阅读20次

    所涉及的函数

    深入了解学习的内容

    数据类型

    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")
    
    image.png

    合并连接

    内连接

    inner_join 函数
    • 内连接的结果是一个新数据框,其中包含键、 x 值和 y 值。我们使用 by 参数告诉 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
    
    inner_join.gif

    外连接

    • 内连接保留同时存在于两个表中的观测, 外连接则保留至少存在于一个表中的观测。外连
      接有 3 种类型。
      • 左连接:保留 x 中的所有观测。
      • 右连接:保留 y 中的所有观测
      • 全连接:保留 x 和 y 中的所有观测。

    left_join函数

    • 左连接:保留 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
    
    left-join.gif

    如果x中的key变量,在y中有多个同样的key,那么所有的结合可能都会罗列出来

    > 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
    
    left-join-extra.gif

    right_join函数

    • 右连接:保留 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 
    
    right-join.gif

    full_join函数

    • 全连接:保留 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
    
    full-join.gif

    使用维恩图表示不同类型连接方式

    image.png

    dplyr中这些连接函数对应基础函数merge中的功能表

    image.png

    dplyr这几种函数的来源SQL中对应的功能

    image.png

    筛选连接

    • 筛选连接匹配观测的方式与合并连接相同,但前者影响的是观测,而不是变量。筛选连接
      有两种类型。
      • semi_join(x, y): 保留 x 表中与 y 表中的观测相匹配的所有观测。
      • anti_join(x, y): 丢弃 x 表中与 y 表中的观测相匹配的所有观测。
    semi_join函数
    • 保留 x 表中与 y 表中的观测相匹配的所有观测
    > semi_join(x, y, by = "key")
    # A tibble: 2 x 2
        key val_x
      <dbl> <chr>
    1     1 x1   
    2     2 x2
    
    semi-join.gif
    anti_join函数
    • 丢弃 x 表中与 y 表中的观测相匹配的所有观测。
    > anti_join(x, y, by = "key")
    # A tibble: 1 x 2
        key val_x
      <dbl> <chr>
    1     3 x3 
    
    anti-join.gif
    参考博文:

    图中gif文件来源,tiwtter上逛#rstat(类似微博话题)专题时看到的大神的操作
    https://github.com/gadenbuie/tidy-animated-verbs#relational-data

    image.png
    参考书籍

    英文版:《R for data science》
    中文版:《R数据科学》

    相关文章

      网友评论

        本文标题:R语言中dplyr包jion函数之目前我看到过的最形象的教程

        本文链接:https://www.haomeiwen.com/subject/hkonbftx.html