使用dplyr计算连续行之间的差异?

时间:2015-07-11 22:18:39

标签: r dplyr

我有一个id和时间戳的数据框。我想计算单个id的每个连续时间戳之间的差异。

我的数据框如下所示:

id  time
Alpha   1
Alpha   4
Alpha   7
Beta    5
Beta    10

我正在尝试添加下面的time.difference列:

id  time    time.difference
Alpha   1   NA
Alpha   4   3
Alpha   7   4
Beta    5   NA
Beta    10  5

使用dplyr有一种干净的方法吗? (或者tidyr或其他比香草R更容易阅​​读的东西?)

2 个答案:

答案 0 :(得分:23)

像这样:

dat %>% 
  group_by(id) %>% 
  mutate(time.difference = time - lag(time))

答案 1 :(得分:6)

使用data.table

library(data.table)
library(dplyr)
setDT(dat)[, time.difference := time - lag(time, 1L), by = id]