I have dataset like this
id data time moreData
<int> <int> <dttm> <dbl>
1 1 4 2017-05-12 18:34:20 4450
2 2 4 2017-05-12 18:37:07 2800
3 3 4 2017-05-12 18:37:10 1900
4 4 4 2017-05-12 18:37:59 1950
5 5 4 2017-05-12 18:38:40 2500
containing timestamps. You could say this data are "requests to a website" and i want to approximate "sessions".
In other words, I wish to group the rows 1, 2 , ... , n in groups, if time difference between row i and i+1 is less then let's say less than 1 minute.
Therefor, the data would be grouped in {1} and {2,3,4,5}.
Please note this is not a duplicate question of other questions asking about grouping in predetermined time intervals - I do not care how big the time difference between first and last element is, I care only about difference in adjacent rows.
How can I achieve this?
Sample data:
structure(list(id = 1:20, user = c(4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L), time = structure(c(1494606860,
1494607027, 1494607030, 1494607172, 1494607173, 1494607197, 1494607198,
1494607200, 1494607309, 1494607312, 1494607339, 1494607340, 1494607343,
1494607343, 1494607404, 1494607405, 1494607407, 1494607492, 1494607493,
1494607495), class = c("POSIXct", "POSIXt"), tzone = "")), .Names = c("id",
"user", "time"), row.names = c(NA, -20L), class = c("tbl_df",
"tbl", "data.frame"))