R for data science(十六)-dplyr 连接函

作者: 一路向前_莫问前程_前程似锦 | 来源:发表于2018-09-19 17:49 被阅读18次

    count函数

    使用count函数返回值为生成的一个新的data.frame,左边那列为要统计的对象,右边为该对象的个数,且第二列列名为n

    count后面跟一个数据框,代表的是数据框行数

    count(flights)
    
    planes%>%
      count(tailnum)
    
    image.png
    count 排序,默认为从小到大排序
    planes%>%
      count(tailnum,sort = T)
    
    count 之后筛选
    planes%>%
      count(tailnum)%>%
      filter(n>1)
    
    image.png
    count 统计多列文件
    flights%>%
      count(year,month,day)
    
    image.png
    多个条件下的count等价于group_by之后count
    flights%>%
      group_by(year,month,day)%>%
      count()
    
    image.png

    合并连接

    主要适用于两个数据框之间的拼接

    常用的函数 left_join和inner_join
    用法均是: x %>%inner_join/left_join(y,by=)
    内连接: inner_join by 参数后面为键
    image.png image.png image.png

    必须保证要合并的两个数据框键的名字是一样的,否则就会出错

    x %>% 
      inner_join(y, by = "key")
    
    image.png

    当健的名字不一样,该怎么解决?如下:

    
    names(x)[1]="n1"
    
    names(y)[1]="n2"
    
    x %>% 
      inner_join(y, by = c("n1"="n2"))
    ##或者省去by
    
    x %>% 
      inner_join(y,  c("n1"="n2"))
    
    image.png
    只要两个数据框的键是相同的就会被连接在一起
    就是说只保留二者共有的键进行合并,x%>%inner_join(y,by=) 则为x在前,y在后

    外链接

    左连接 保留x中的所有观测 left_join 最常用
    右链接 保留x中的所有观测 right_join
    全连接 保留x和y中的所有观测 full_join
    image.png
    筛选连接
    semi_join(x,y,by) 在指定的键中,只会保留x中与y相同的行
    重要的是存在匹配,匹配到哪一行不重要
    image.png image.png
    anti_join(x,y,by) 在指定的键中,只会保留x中与y不相同的行,即代表把相同的行去掉,保留x中与y键不同的行
    image.png

    连接flights和planes时,查看flights中有多少行在planes中有记录,用count更快

    flights%>%
      semi_join(planes,by="tailnum")%>%
      nrow()
    #######
    flights%>%
      semi_join(planes,by="tailnum")%>%
      count()
    
    
    image.png

    连接flights和planes时,查看flights中有多少行在planes中没有记录

    flights%>%
      anti_join(planes,by="tailnum")%>%
      nrow()
    
    flights%>%
      anti_join(planes,by="tailnum")%>%
      count()
    
    
    image.png

    相关文章

      网友评论

        本文标题:R for data science(十六)-dplyr 连接函

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