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

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

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


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

在这里插入图片描述

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

一、筛选

2.1 按列筛选【select】

1、筛选yearmonthcarrierflight

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

在这里插入图片描述

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

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

在这里插入图片描述

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

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

在这里插入图片描述

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

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

在这里插入图片描述

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"))

在这里插入图片描述

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"))

在这里插入图片描述

二、排序【arrange】

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

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

在这里插入图片描述

三、修改添加变量【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()

在这里插入图片描述

四、分组计算【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))

在这里插入图片描述

五、连接【join】

dplyr包提供了类似SQL中的表连接语句函数,具体分为full_join()inner_join()left_join()right_join(),具体连接的方式可见下图
在这里插入图片描述
现以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为连接字段

在这里插入图片描述

总结

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

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

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

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值