抱歉如果我的标题没有恰当地描述我要执行的任务。
为了一项大学项目,我收到了一个网站的访问日志,我已经丢弃了不必要的列,并将其压缩成了以下内容:
为了一项大学项目,我收到了一个网站的访问日志,我已经丢弃了不必要的列,并将其压缩成了以下内容:
╔══════════╦══════════════════════╦═════════════════╦═════════════╦════════════════╗
║ accessid ║ date_time_in_seconds ║ yg_requester_id ║ referent_id ║ referent_docid ║
╠══════════╬══════════════════════╬═════════════════╬═════════════╬════════════════╣
║ 2449 ║ 2009011621830 ║ 32276 ║ 12648 ║ 1 ║
║ 2776 ║ 2009011622726 ║ 76360 ║ 11070 ║ 1 ║
║ 2804 ║ 2009011622783 ║ 32276 ║ 13845 ║ 1 ║
║ 2894 ║ 2009011623025 ║ 32276 ║ 7222 ║ 1 ║
║ 2895 ║ 2009011623037 ║ 32276 ║ 1530 ║ 1 ║
║ 3000 ║ 2009011623406 ║ 32276 ║ 3728 ║ 1 ║
║ 3019 ║ 2009011623497 ║ 520060 ║ 10356 ║ 1 ║
║ 3245 ║ 2009011625780 ║ 300841 ║ 4607 ║ 1 ║
║ 3274 ║ 2009011628309 ║ 532664 ║ 14377 ║ 1 ║
║ 3275 ║ 2009011628420 ║ 532664 ║ 9097 ║ 1 ║
╚══════════╩══════════════════════╩═════════════════╩═════════════╩════════════════╝
最初时间戳和日期是按单位(年、月、日、小时、分钟、秒)分别列在不同的列中,为了更方便地计算,我已将它们合并成 date_time_in_seconds 格式。
[0000][00][00][00000]
[YEAR][MONTH][DAY][Number of Seconds since 00:00]
accessid是表格条目ID,yg_requester_id是网站访问者的唯一ID,referent_id是他们阅读的网站文章的ID,referent_docid表示文章类型,但在此任务中不需要。
基本上,我想能够找到自上次相同的yg_requester_id访问了不同的referent_id以来的时间差。
例如,查看上表中的这一行:
╔══════════╦══════════════════════╦═════════════════╦═════════════╦════════════════╗
║ accessid ║ date_time_in_seconds ║ yg_requester_id ║ referent_id ║ referent_docid ║
╠══════════╬══════════════════════╬═════════════════╬═════════════╬════════════════╣
║ 2449 ║ 2009011621830 ║ 32276 ║ 12648 ║ 1 ║
║ 2776 ║ 2009011622726 ║ 76360 ║ 11070 ║ 1 ║
║ 2804 ║ 2009011622783 ║ 32276 ║ 13845 ║ 1 ║
╚══════════╩══════════════════════╩═════════════════╩═════════════╩════════════════╝
yg_requester_id 32276在2009年1月16日06:03:50(午夜后的21830秒)访问了id为12648的文章。然后在同一天06:19:43(午夜后的22783秒)访问了id为13845的文章。因此可以推断用户阅读第一篇文章12648大约花费了15分钟50秒。
我想要找到同一用户访问两篇文章之间的时间差。由同一用户阅读的连续文章可能没有连续的访问ID(尽管它将始终递增)。另外,为了过滤掉阅读时间小于一定分钟数(如15分钟)的记录,我还想限制阅读时间在一小时左右。
提前感谢,如果需要更多信息,请让我知道。