本次介绍的是R语言中非常流行的数据处理包dplyr,它主要聚焦于tibble型的数据结构,此结构是对数据框dataframe的重构,在呈现大型数据集时非常友好,具体表现为:附带数据行数和列数,每列数据类型,少量数据示例和省略的行数等。
以下就根据日常数据处理的需求,依次介绍dplyr包中涉及的主要函数。
本次演示数据集:
nycflights13包下的
flights数据集,包含2013年从纽约飞往各地的航班信息,共336776条数据,如下图所示。

各数据字段含义可通过?filghts进行查看,在此不再介绍。考虑代码的简洁性,以下操作均使用管道运算符%>%展开,减少了构建中间变量的麻烦。(%>%可以将左边的结果作为右边函数的第一个参数)
一、筛选
2.1 按列筛选【select】
1、筛选year、month、carrier、flight列
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之间的,航空公司UA、B6、AS的信息】
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】
依次按照year,month,day,flight排序,其中day、flight为降序排列
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包中常用的函数名称如下表所示
| 作用 | 函数名 |
|---|---|
| 筛选 | filter、select |
| 排序 | arrange |
| 添加修改变量 | mutate |
| 分组计算 | group_by |
| 连接 | join |
以上就是本次分享的全部内容~
本文详细介绍了R语言dplyr包在数据处理中的核心功能,包括筛选(select)、按条件过滤(filter)、排序(arrange)、变量修改(mutate)、分组计算(group_by)以及连接(join)。通过flights数据集实例演示了如何高效处理大型数据集。
dplyr扩展包常用函数介绍与应用&spm=1001.2101.3001.5002&articleId=124164210&d=1&t=3&u=853065efd7d14513affac9c701f41543)
2万+

被折叠的 条评论
为什么被折叠?



