在 R 中计算每个访问者的唯一会话
calculate unique session per visitor in R
我有以下 table 我想计算唯一会话的数量假设:如果同一个访问者(浏览器)有两个相差超过 30 分钟的连续时间戳,那么应该考虑这些作为两个独特的会话。
浏览器是每个用户的唯一标识
时间戳是带时间的日期
第url页第
页
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
所以根据给定的逻辑和上面的虚拟 table 我应该得到 3 个独特的会话。 2 个用于浏览器 x,1 个用于浏览器 y
我对 R 还很陌生,所以我什至不知道如何开始。非常感谢任何阅读相关内容的帮助或建议。
使用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)
我有以下 table 我想计算唯一会话的数量假设:如果同一个访问者(浏览器)有两个相差超过 30 分钟的连续时间戳,那么应该考虑这些作为两个独特的会话。
浏览器是每个用户的唯一标识 时间戳是带时间的日期 第url页第
页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
所以根据给定的逻辑和上面的虚拟 table 我应该得到 3 个独特的会话。 2 个用于浏览器 x,1 个用于浏览器 y
我对 R 还很陌生,所以我什至不知道如何开始。非常感谢任何阅读相关内容的帮助或建议。
使用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)