用dplyr包整理数据

简介

在拿到数据之后,我们需要做数据整理。比如:

  1. 创建一些新变量。
  2. 重命名变量。
  3. 更改殊勋。
  4. 筛选数据。

为了做到这个,我们可以用dplyr包来进行数据的转换。
dplyr已经整合进tidyverse了,所以加载tidyverse就行。

用到的数据集

为了进行演示,我们用到nycflights13库中flights数据集。
这个数据集

library(nycflights13)
library(tidyverse)
# 了解flights的内容
?flights

在这里插入图片描述

常用操作

通过值筛选数据(filter())

任务1:筛选1月1日的航班

filter(flights,month==1,day==1)

在这里插入图片描述

任务2:筛选11月和12月的航班

方法1:
filter(flights,month==11 | month==12)
方法2:
filter(flights, month %in% c(11,12))

在这里插入图片描述

任务3:筛选到达延迟超过两小时的航班

filter(flights,arr_delay >= 120)

任务4:筛选凌晨到8点的航班

filter(flights,dep_time>=000 & dep_time <=800)

还有一种写法是用到between函数,between返回一个区间范围。

filter(flights, between(dep_time,000,800))

在这里插入图片描述

任务5:筛选没有出发时间的航班

filter(flights,is.na(dep_time))

在这里插入图片描述

重新排序数据(arrange())

注意:缺失值总是排在最后

任务1:按照时间排序(默认升序)

arrange(flights,year,month,day)

在这里插入图片描述

任务2:按降序排列到达时间

arrange(flights,desc(arr_time))

在这里插入图片描述

通过名字选择变量(select())

有些数据集有很多变量,这代表着有很多列。可以通过select来选择某些列。

select(flights,year,month,day,arr_time)

在这里插入图片描述

通过已经存在的变量创建新变量(mutate())

mutate会在数据集的最后增加新列,所以要创建一个新的数据集来借助。

flights_new <- select(flights, year:day,ends_with("delay"),distance,air_time)
mutate(flights_new,gain=arr_delay-dep_delay,speed=distance/air_time*60)

在这里插入图片描述
如果只想要新创建的数据,把mutate换成transmute。

其他函数也都可以放在mutate中,但是必须是向量。

总结数据(summarize())

summarize(flights,delay=mean(dep_delay,na.rm=TRUE))

在这里插入图片描述

summarize配合group_by()

我们一步步来看:

第一步:
 flightsPerDay <- group_by(flights, year,month,day)
(summarize(flightsPerDay))

第一行代码,就是对flights数据集进行分组,按照year,month,day三个变量分组。
这代表着,相同一天的数据被分到了一起。一年365天,所以,当我们进行summarize的时候,我们看到有365个数据。
在这里插入图片描述

第二步:统计数量
(summarize(flightsPerDay,count=n()))

在原本的基础上加上一个count变量
结果如下:
在这里插入图片描述
新加了一个统计,也就是每一天的有多少飞机在机场离开。

第三步:统计平均晚到时间
(summarize(flightsPerDay,count=n(),arrDelay=mean(arr_delay,na.rm=TRUE)))

na.rm=TRUE一定要加,否则但凡有一个NA,所有数据都会被计算成NA。
在这里插入图片描述

第四步:用ggplot作图

这一步不清楚的,参照前面的文章。

DayDelay <- summarize(flightsPerDay,count=n(),arrDelay=mean(arr_delay,na.rm=TRUE))
# 把统计结果交给一个新的数据集
ggplot(DayDelay)+geom_smooth(mapping=aes(x=day,y=arrDelay))
# 用ggplot画拟合曲线

下面就是每个月的哪一天,飞机晚点的一个大体走势。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值