我有点击流数据。下面,我为一个用户提供了示例数据:
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开始逐步命名它们。老实说,我找不到任何示例。感谢您的指导。
答案 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)