如果页面上的持续时间大于某个值,则在点击流数据上创建会话

时间:2018-07-31 18:33:06

标签: r clickstream

我有点击流数据。下面,我为一个用户提供了示例数据:

user_id  page   time   duration
1        A      12:15  5
1        B      12:21  3
1        C      12:25  22
1        D      12:48  5
1        B      12:54  2
1        A      12:57  5

我要为每个用户执行的操作是,如果页面上的持续时间大于22,则应将其标识为不同的会话,然后将其显示为不同的列,例如对于用户#1:

user_id  page   time   duration   session
1        A      12:15  5          1
1        B      12:21  3          1
1        C      12:25  22         1
1        D      12:48  5          2
1        B      12:54  2          2
1        A      12:57  5          2

应该对所有用户执行相同的操作,如果页面上的持续时间超过20,则创建会话,然后从1开始逐步命名它们。老实说,我找不到任何示例。感谢您的指导。

1 个答案:

答案 0 :(得分:1)

我们可以计算出累加和除以22

awk '
BEGIN{
  OFS="\t"
  print "ID\t\tDE"
}
/ID/{
  if(id){
    print id,de
    id=de=""
  }
  id=$2
  next
}
/DE/{
  $1=""
  sub(/^ +/,"")
  de=$0
}
END{
  if(id){
    print id,de
  }
}'   Input_file

,输出将是

library(dplyr)

 output <- click-stream %>% group_by(user_id) 
 %>% mutate(csum = cumsum(duration)) 
 %>% mutate(rank= as.integer(csum / 22) + 1)