一、常用创建函数
1.偏移函数
lead()和lag()函数可以返回一个序列的领先值和滞后值。它们可以计算出序列的移动差值(如x – lag(x))或发现序列何时发生了变化(x != lag(x))
a<-c(1:10);a
lag(a)
lead(a)
利用lag函数和lead函数也可以用来求差分,不过会有缺失值
a-lag(a)#等于
diff(a)
lead(a)-lag(a)
diff(1:10, 2)
R 提供了计算累加和、累加积、累加最小值和累加最大值的函数:cumsum()、cumprod()、 cummin() 和 cummax();dplyr 还提供了 cummean() 函数以计算累加均值
cumsum(a)
cumprod(a)
cummin(a)
cummax(a)
cummean(a)
二、管道操作
假设我们想要研究每个目的地的距离和平均延误时间之间的关系。使用已经了解的dplyr包功能,你可能会写出以下代码:
数据在下面这篇文章中找
dplyr详解
(by_dest <- group_by(flights, dest))
delay <- summarize(by_dest, count = n(), dist = mean(distance, na.rm = TRUE), delay = mean(arr_delay, na.rm = TRUE) )
delay <- filter(delay, count > 20, dest != "HNL")
ggplot(delay,aes(dist,delay))+geom_point()+geom_smooth()
这段代码写起来有点令人泄气,因为不得不对每个中间数据框命名,尽管我们根本不关心这一点。命名是很难的,这样做会影响我们的分析速度。解决这个问题的另一种方法是使用管道,%>%:
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")
这种方法的重点在于转换的过程,而不是转换的对象,这使得代码具有更好的可读性。你可以将其读作一串命令式语句:分组,然后摘要统计,然后进行筛选。在阅读代码时,%>%最好读作“然后”。