Рассчитать уникальную сессию на посетителя в 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)