dplyr这个包提供让我们更加方便和高效操作数据的方法,一下是一些常见的操作以及说明
数据准备:
nycflights13(R默认没有,需要安装)中的flights
dplyr
首先来看一下flights这个data.frame
1.filter
这个函数允许你选择指定的data frame中的子集,第一个参数是data frame,其后的参数是筛选条件
例如筛选flights中month=1&day=1的数据,就可以这样写:
filter(flights, month == 1, day == 1)
等价于:
flights[flights$month == 1 & flights$day == 1, ]
也可以这样写,筛选month=1|month=2的记录:
filter(flights, month == 1 | month == 2)
2.slice()
通过这个函数选择data frame中的指定的行,这里以选取1到10行数据为例:
slice(flights, 1:10)
3.arrange
将data frame按照指定的列名进行排列
按照 dep_time进行升序排列
arrange(flights, dep_time)
按照 dep_time进行降序排列
arrange(flights, desc(dep_time))
当然你也可以指定同时按照多列进行排序,例如:
4.select
选取指定的列
选取year、month、day列
select(flights, year, month, day)
选取year到dep_time列:
select(flights, year:dep_time)
选取year、month、day之外的列:
select(flights, -(year:day))
5.rename
给指定的列重命名:rename(flights, tail_num = tailnum)
将tailnum重命名为tail_num
6.distinct
distinct(flights, tailnum)
查看data frame中不重复的列下的数据
这个和unique很相似,但是distinct的效率会更高
7.mutate
添加列
mutate(flights,
gain = arr_delay - dep_delay,
speed = distance / air_time * 60)
如果你想要马上查看新建的列的内容使用
transmute(flights,
gain = arr_delay - dep_delay,
gain_per_hour = gain / (air_time / 60)
)
8.summarise()
对数据框调用其它函数进行汇总操作,对dep_delay求平均数
summarise(flights,
delay = mean(dep_delay, na.rm = TRUE))
9. sample_n() sample_frac()
sample_n()随机选择n条记录
sample_frac()随机选择总数的百分比的记录