0

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

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 开始逐步命名它们。老实说,我找不到任何示例。我很感激任何指导。

4

1 回答 1

1

我们可以计算累积和除以 22

library(dplyr)

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

输出将是

# Groups:   user_id [1]
 user_id page  time  duration  csum  rank
     <int> <fct> <fct>    <int> <int> <dbl>
1       1 A     12:15        5     5     1
2       1 B     12:21        3     8     1
3       1 C     12:25       22    30     2
4       1 D     12:48        5    35     2
5       1 B     12:54        2    37     2
6       1 A     12:57        5    42     2
于 2019-01-15T04:54:08.700 回答