条件滞后函数

Conditional lag function

数据基于 Kaggle here 的数据集并提取到 R。

使用以下结构:

Index   VisitorId           VisitId     Visit# Hit# pagePath
0       000722514342430295  1470093727  1      1    /home
1       000722514342430295  1470093727  1      3    /google+redesign/apparel
2       000722514342430295  1470093727  1      4    /asearch.html
3       000722514342430295  1470093727  1      5    /asearch.html
4       0014659935183303341 1470037282  1      1    /home
5       0015694432801235877 1470043732  1      1    /home
6       0015694432801235877 1470043732  1      2    /google+redesign/electronics
7       0015694432801235877 1470043732  1      3    /google+redesign/apparel/men++s/men++s+t+shirts
8       0015694432801235877 1470043732  1      4    /google+redesign/apparel/kid+s/kid+s+infant
9       0015694432801235877 1470043732  1      5    /google+redesign/apparel/kid+s/kid+s+infant/quickview

我正在尝试实现一个变异滞后函数,它将 return 给定访问者给定访问的先前页面路径。

例如,新列 prev_path 将特定于 visitorid 和 visitid,并且会滞后 Hit# 1,但会 return 一个 <NA> 当在 Visit 的情况下不可用时1, 命中 2.

我们可以做一个group_by选项

library(dplyr)
df1 %>%
   group_by(VisitorId, VisitId) %>%
   mutate(prev_path = case_when(lag(`Hit#`) == `Hit#` -1 ~ lag(pathPath), 
            TRUE ~ NA_integer_))

这是你想要做的吗?

library(dplyr)

df %>%
  group_by(VisitorId, VisitId) %>%
  mutate(prev_path = ifelse(lag(`Hit#`) == `Hit#` - 1, lag(pagePath), NA))