在看之前,首先来一波总结
dplyr 函数总结:
filter 筛选行
arrange 排列行
select 筛选列
mutate 增加列
transmute() 生成新列
group_by 分组变量
summarise() 汇总,里面设置函数
这些函数都可以和group_by()函数联合起来使用,group_by()函数可以改变每个函数的作用范围,让其从在整个数据集的操作上变为在每个分组上分别操作。
用法:
filter/arrange/select/mutate (data,函数式 )
今天我们看一下,我们的前2个函数
首先我们加载数据包
library(nycflights13)
library(tidyverse)
**第一个包为数据集,包含的数据是2013年所有从纽约出发的航班时刻表,共计336776次,在加载第二个包的时候,会出现warning **
这个是说明包里面的函数和R自带的底层函数出现相同的函数名,这样就会出现底层的函数就会被改写,如果你执意要使用底层函数的话
你可以这样操作:
stats::filter()
好了,我们看一下dplyr推荐的几大函数来解决我们的问题:
filter函数功能:挑选行
用法: filter(dataset ,表达式)
注意:dataset 必须是dataframe
例如:挑选所有航班时间为一月一号的,需要下面一行命令:
filter(flights, month == 1, day == 1)
如果想把将结果储存一次,就使用一个赋值符号就可以了
jan1<- filter(flights, month == 1, day == 1)
而且每个,
表示的为同时满足的意思
如果想储存的同时,还想看一下结果就多加一个括号,可以理解为打印
(jan1<- filter(flights, month == 1, day == 1))
逻辑比较操作符:
等于 ==
不等于 !=
大于 >
大于等于 >=
小于 <
小于等于 <=
这里给大家出个问题:
sqrt(2) ^ 2 == 2
返回的是T还是F?
返回的是F,因为程序存储的结果是有理数,而sqrt(2)是无理数,
near(sqrt(2) ^ 2, 2)
这样返回的为T
条件操作符:
& 取交集
| 或者
%in% 包含符号
例如:寻找航班起飞时间为11月或者12月
filter(flights, month == 11 | month == 12)
也可以这样:
filter(flights, month %in% c(11, 12))
下面三个也是等价的。
filter(flights, !(arr_delay > 120 | dep_delay > 120))
filter(flights, arr_delay <= 120, dep_delay <= 120)
filter(flights, arr_delay <= 120&dep_delay <= 120)
寻找缺失值,如果你的数据集里面存在缺失值,如何找出呢?
借助is.na
来寻找
between()是对 x >= left & x <= right 的简写
x=seq(1,10)
x[between(x,left, right)]
接着就是讲解排序,我们最常用的就是order
x[order(),] 正叙
x[order(-),] 倒叙
arrange 排序
用法:arrange(data.frame ,变量)
arrange(flights, year, month, day)</pre>
代表先按照year从小到大排序,再按照月份,再按照天数
倒叙排列加上desc(变量)
arrange(flights, desc(arr_delay))