2016-11-28 40 views
0

我有以下數據集:遍歷每個組和減去自己的價值

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 

什麼是最有效的方法呢?

+0

謝謝@ZheyuanLi,完美。請考慮寫下您的評論,並回答如下,然後我可以接受。 – MFR

+0

謝謝@ Hack-R沒有出現在我的搜索中。我需要刪除這個問題嗎? – MFR

+0

@MFR無論哪種方式。你可以離開它,如果其他人同意這是一個騙局,它將被關閉。但是,這可能實際上是一個問題禁令,所以你可能想刪除它來想想它。 –

回答

1

非常感謝李哲元。

這是一個很好的解決方案:

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