5个关键的dplyr函数:
根据值选择观察(记录),filter()####筛选行
对行重新排序,arrange() ######arrange()函数工作原理和filter()相似,但它不是选择行,而是改变行的顺序。
根据名字选择变量,select() #####筛选列
根据已知的变量创建新的变量,mutate()
将许多值塌缩为单个描述性汇总,summarize()
重命名列rename()
举例filter()
a <- filter(flights, month == 1, day == 1)
b<- filter(flights, month == 11 | month == 12)
c <- filter(flights, month %in% c(11, 12))
列举arrange()
arrange(flights, year, month, day)
arrange(flights, desc(arr_delay))
select(flights, year, month, day)
select(flights, year:day) # 选择year到day之间(包含本身)的所有列
select(flights, -(year:day))# 选择那么除year到day的所有列
有很多帮助函数可以使用在select()函数中:
starts_with("abc")匹配以“abc”开头的名字。
ends_with("xyz")匹配以“xyz”结尾的名字。
contains("ijk")匹配包含“ijk”的名字。
matches("(.)\\1")选择符合正则表达式的变量。这里是任意包含有重复字符的变量。
num_range("x", 1:3)匹配x1,x2,x3。
rename重命名列
rename(flights, tail_num = tailnum) ###rename()来给变量重新命名列名
使用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)
####再例如
mutate(flights_sml,
gain = arr_delay - dep_delay,
hours = air_time / 60,
gain_per_hour = gain / hours)
####如果你仅仅想要保存新的变量,使用transmute():
transmute(flights,
gain = arr_delay - dep_delay,
hours = air_time / 60,
gain_per_hour = gain / hours)
summarize()与group_by()和管道符%>%配对使用
summarize()与group_by()配对使用
比如,我们想要按日期分组,得到每个日期的平均延期:
by_day <- group_by(flights, year, month, day)
summarize(by_day, delay = mean(dep_delay, na.rm = TRUE))
#####探索每个位置距离和平均航班延迟的关系
delays <- flights %>%
group_by(dest) %>%
summarize(
count = n(),
dist = mean(distance, na.rm = TRUE),
delay = mean(arr_delay, na.rm = TRUE)
) %>%
filter(count > 20, dest != "HNL")
#####其中n()计数的作用
上述代码分三步进行了数据准备:
1.按目的地将航班分组,计算了每一组的dist平均值和delay 的平均值。
2.汇总计算距离、平均延时和航班数目
3.移除噪声点和Honolulu航班,它太远了。
网友评论