R语言(八)dplyr扩展包常用函数介绍与应用

本次介绍的是R语言中非常流行的数据处理包dplyr,它主要聚焦于tibble型的数据结构,此结构是对数据框dataframe的重构,在呈现大型数据集时非常友好,具体表现为:附带数据行数和列数,每列数据类型,少量数据示例和省略的行数等。

以下就根据日常数据处理的需求,依次介绍dplyr包中涉及的主要函数。

目录

      • 一、筛选
        • 2.1 按列筛选【select】
        • 2.2 按行筛选【filter】
      • 二、排序【arrange】
      • 三、修改添加变量【mutate】
      • 四、分组计算【group_by】
      • 五、连接【join】
      • 总结

本次演示数据集: nycflights13包下的 flights数据集,包含2013年从纽约飞往各地的航班信息,共336776条数据,如下图所示。

R语言(八)dplyr扩展包常用函数介绍与应用_第1张图片

各数据字段含义可通过?filghts进行查看,在此不再介绍。考虑代码的简洁性,以下操作均使用管道运算符%>%展开,减少了构建中间变量的麻烦。(%>%可以将左边的结果作为右边函数的第一个参数)

一、筛选

2.1 按列筛选【select】

1、筛选yearmonthcarrierflight

library(dplyr)
flights%>%
  select(year,month,carrier,flights)%>%
  head()

R语言(八)dplyr扩展包常用函数介绍与应用_第2张图片

2、筛选以【d】为首字母的变量

flights%>%
  select(starts_with("d"))%>%
  head()

R语言(八)dplyr扩展包常用函数介绍与应用_第3张图片

3、筛选包含【lay】的变量

flights%>%
  select(contains("lay"))%>%
  head()

R语言(八)dplyr扩展包常用函数介绍与应用_第4张图片

4、筛选以【time】结尾的变量

flights%>%
  select(ends_with("time"))%>%
  head()

R语言(八)dplyr扩展包常用函数介绍与应用_第5张图片

2.2 按行筛选【filter】

1、多条件筛选【筛选出4月14日起飞,飞行距离在1000-2000之间的,航空公司UAB6AS的信息】

flights%>%
  select(year,month,day,distance,carrier)%>%
  filter(month==4,day==14,
         between(distance,1000,2000),
         carrier%in%c("UA","B6","AS"))

R语言(八)dplyr扩展包常用函数介绍与应用_第6张图片

2、正则筛选【筛选出tailnum中包含AA字段的航班信息】

#grepl正则筛选
flights%>%
  select(year,month,day,distance,carrier,tailnum)%>%
  filter(grepl("AA",tailnum))

#stringr正则筛选
flights%>%
  select(year,month,day,distance,carrier,tailnum)%>%
  filter(stringr::str_detect(tailnum,pattern="AA"))

R语言(八)dplyr扩展包常用函数介绍与应用_第7张图片

二、排序【arrange】

依次按照yearmonthdayflight排序,其中dayflight为降序排列

flights%>%
  select(year,month,day,flight)%>%
  arrange(year,month,-day,-flight)

R语言(八)dplyr扩展包常用函数介绍与应用_第8张图片

三、修改添加变量【mutate】

计算飞行节约的时间和平均每小时节约的时间【arr_delay为到达延误时间,dep_deplay为起飞延误时间,负值表示提前到达或提前起飞】

flights%>%
  mutate(gain=arr_delay-dep_delay,
         gain_per_hour=gain/(air_time/60))%>%
  select(gain,gain_per_hour)%>%
  head()

R语言(八)dplyr扩展包常用函数介绍与应用_第9张图片

四、分组计算【group_by】

Group_by函数通常与summarise函数结合使用,以下代码表示:按照航公公司carrier分组,计算每个航空公司的个数、平均起飞延误时间、平均到达延误时间、以及距离的标准差,其中na.rm=TRUE表示计算时,忽略缺失值

flights%>%
  group_by(carrier)%>%
  summarise(count=n(),
            dep_delay_mean=mean(dep_delay,na.rm=TRUE),
            arr_delay_mean=mean(arr_delay,na.rm=TRUE),
            distance_sd = sd(distance,na.rm = TRUE))

R语言(八)dplyr扩展包常用函数介绍与应用_第10张图片

五、连接【join】

dplyr包提供了类似SQL中的表连接语句函数,具体分为full_join()inner_join()left_join()right_join(),具体连接的方式可见下图
R语言(八)dplyr扩展包常用函数介绍与应用_第11张图片
现以left_join函数为例进行演示说明

student<-data.frame(id=c("1001","1002","1003"),
                    name=c("bob","jack","gin"),
                    class_type=c("一班","二班","三班"))
score<-data.frame(id=c("1001","1002"),
                  score=c(70,80))

left_join(student,score,by="id")  #by为连接字段

R语言(八)dplyr扩展包常用函数介绍与应用_第12张图片

总结

dplyr包中常用的函数名称如下表所示

作用 函数名
筛选 filterselect
排序 arrange
添加修改变量 mutate
分组计算 group_by
连接 join

以上就是本次分享的全部内容~

你可能感兴趣的:(R语言,R,R语言进阶,数据处理,dplyr)