library(nycflights13)
library(tidyverse)
dplyr最常用的5个函数:
• 按值筛选观测(filter())。
• 对行进行重新排序(arrange())。
• 按名称选取变量(select())。
• 使用现有变量的函数创建新变量(mutate())。
• 将多个值总结为一个摘要统计量(summarize())。
函数的使用方法:
(1) 第一个参数是一个数据框。
(2) 随后的参数使用变量名称(不带引号)描述了在数据框上进行的操作。
(3) 输出结果是一个新数据框。
filter
1.使用filter()筛选行
filter(flights, month == 1, day == 1)
2.其他比较运算符、>=、<、<=、!=(不等于)和 ==(等于)
3.布尔运算符:& 表示“与”、| 表示 “或”、! 表示“非”
找出 11 月或 12 月出发的所有航班
filter(flights, month == 11 | month == 12)
filter(flights, month %in% c(11, 12))
如果想要找出延误时间(到达或出发)不多于2小时的航班, 那么使用以下两种筛选方式均可:
filter(flights, !(arr_delay > 120 | dep_delay > 120))
filter(flights, arr_delay <= 120, dep_delay <= 120)
arrange
1.使用arrange()排列行,接受一个数据框和一组作为排序依据的列名(或者更复杂的表达式)作为参数。 如果列名不只一个,那么就使用后面的列在前面排序的基础上继续排序
arrange(flights, year, month, day)
使用 desc() 可以按列进行降序排序:
arrange(flights, desc(arr_delay))
select
1.使用select()选择列
# 按名称选择列
select(flights, year, month, day)
# 选择“year”和“day”之间的所有列(包括“year”和“day”)
select(flights, year:day)
# 选择不在“year”和“day”之间的所有列(不包括“year”和“day”)
select(flights, -(year:day))
mutate
使用mutate()添加新变量
flights_sml <- select(flights,
year:day,ends_with("delay"),
distance,air_time
)
mutate(flights_sml,
gain = arr_delay - dep_delay,
speed = distance / air_time * 60
)
如果只想保留新变量,可以使用 transmute() 函数:
transmute(flights,
gain = arr_delay - dep_delay,
hours = air_time / 60,
gain_per_hour = gain / hours
)
summarize
使用summarize()进行分组摘要
#每日平均延误时间:
by_day <- group_by(flights, year, month, day)
summarize(by_day, delay = mean(dep_delay, na.rm = TRUE))
欢迎关注~

选自:R数据科学
网友评论