Групповой набор данных на основе меток - PullRequest
0 голосов
/ 25 марта 2019

У меня есть набор данных из игрового приложения.Я хочу разрезать набор данных моего приложения на сессии.Новый сеанс начинается с 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...