У меня есть набор данных из игрового приложения.Я хочу разрезать набор данных моего приложения на сессии.Новый сеанс начинается с appstart или appresume.В основном это заканчивается appclose, но не всегда так.
Структура записи выглядит следующим образом:
appdata <- data.frame(userid = c(1,1,1,1,1,1,1), activity = c("appstart","appclose","appresume","run","appstart", "run", "run"),points = c(263,275,278,321, 322, 412, 498))
appdata
userid activity points
1 1 appstart 263
2 1 appclose 275
3 1 appresume 278
4 1 run 321
5 1 appstart 322
6 1 run 412
7 1 run 498
Я хочу, чтобы она выглядела так:
appdata_new <- data.frame(userid = c(1,1,1), session = c(1,2,3), mean_points = c(269, 299.5, 410.67))
appdata_new
userid session mean_points
1 1 1 269.00
2 1 2 299.50
3 1 3 410.67
Я попробовал следующее, основываясь на комментарии пользователя, но он не работал с моим набором данных:
appdata %>% group_by(userid, session = cumsum(lag(activity == "appstart", default = FALSE) | cumsum(lag(activity == "appresume", default = FALSE))) %>% summarise(mean_points = mean(points))