循环遍历每个组并减去它们的值

时间:2016-11-28 00:01:17

标签: r

我有以下数据集:

df <- data.frame (id= c(1,1,1,2,2), time = c(13,14,17,17,17))

  id time
1  1   13
2  1   14
3  1   17
4  2   17
5  2   17  

我想继续讨论每个id并减去下一次和前一次。所以,我理想的输出将是:

#output 
   id time  diff
1  1   13    0
2  1   14    1
3  1   17    3
4  2   17    0
5  2   17    0

最有效的方法是什么?

1 个答案:

答案 0 :(得分:1)

谢谢李哲元。

这是一个很好的解决方案:

df$diff <- with(df, ave(time, id, FUN = function (x) c(0, diff(x))))