Рассчитать уникальную сессию на посетителя в R

У меня есть следующая таблица, и я хотел бы рассчитать количество уникальных сеансов, предполагая, что: если один и тот же посетитель (браузеры) имеет две последовательные метки времени с разницей более 30 минут, то их следует рассматривать как две уникальные сессии.

Браузеры уникальным образом идентифицируют каждую временную метку пользователя как дату и время.

Browsers    timestamp             Page
  x        2014-01-01 14:15:33     1
  x        2014-01-01 14:16:33     2
  x        2014-01-01 14:17:33     3
  x        2014-01-01 16:15:33     1
  y        2014-01-01 16:20:33     5
  y        2014-01-01 16:25:33     2

Таким образом, основываясь на приведенной логике и приведенной выше фиктивной таблице, я должен получить 3 уникальных сеанса. 2 для браузеров х и 1 для браузеров у

Я довольно новичок в R, поэтому понятия не имею, с чего начать. Любая помощь или предложение прочитать что-то актуальное очень ценится.

2 ответа

Решение

Решение с использованием data.table:

setDT(df)[order(timestamp), .(uniSession = sum(diff(timestamp) > 30) + 1), .(Browsers)]
   Browsers uniSession
1:        x          2
2:        y          1

С dplyr

library(dplyr)
df %>%
   group_by(Browsers) %>%
   arrange(timestamp) %>%
   summarise(uniSession = sum(diff(timestamp) > 30) + 1)
Другие вопросы по тегам