I have data like this:
Incident.ID.. = c(rep("INCFI0000029582",4), rep("INCFI0000029587",4))
date = c("2014-09-25 08:39:45", "2014-09-25 08:39:48", "2014-09-25 08:40:44", "2014-10-10 23:04:00", "2014-09-25 08:33:32", "2014-09-25 08:34:41", "2014-09-25 08:35:24", "2014-10-10 23:04:00")
df = data.frame(Incident.ID..,date, stringsAsFactors = FALSE)
df
Incident.ID.. date
1 INCFI0000029582 2014-09-25 08:39:45
2 INCFI0000029582 2014-09-25 08:39:48
3 INCFI0000029582 2014-09-25 08:40:44
4 INCFI0000029582 2014-10-10 23:04:00
5 INCFI0000029587 2014-09-25 08:33:32
6 INCFI0000029587 2014-09-25 08:34:41
7 INCFI0000029587 2014-09-25 08:35:24
8 INCFI0000029587 2014-10-10 23:04:00
I use this function to calculate time difference in seconds:
padded.diff = function(x) c(0L, diff(x))
df2=within(df, {
date = strptime(date, format="%Y-%m-%d %H:%M:%S")
date.diff = padded.diff(as.numeric(date))
})
df2
Incident.ID.. date date.diff
1 INCFI0000029582 2014-09-25 08:39:45 0
2 INCFI0000029582 2014-09-25 08:39:48 3
3 INCFI0000029582 2014-09-25 08:40:44 56
4 INCFI0000029582 2014-10-10 23:04:00 1347796
5 INCFI0000029587 2014-09-25 08:33:32 -1348228
6 INCFI0000029587 2014-09-25 08:34:41 69
7 INCFI0000029587 2014-09-25 08:35:24 43
8 INCFI0000029587 2014-10-10 23:04:00 1348116
But how could I calculate the difference so that it would start from zero for every "Incident.ID.." ?:
Incident.ID.. date date.diff
1 INCFI0000029582 2014-09-25 08:39:45 0
2 INCFI0000029582 2014-09-25 08:39:48 3
3 INCFI0000029582 2014-09-25 08:40:44 56
4 INCFI0000029582 2014-10-10 23:04:00 1347796
5 INCFI0000029587 2014-09-25 08:33:32 0
6 INCFI0000029587 2014-09-25 08:34:41 69
7 INCFI0000029587 2014-09-25 08:35:24 43
8 INCFI0000029587 2014-10-10 23:04:00 1348116
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…