Как я могу сгруппировать активность сайта по сеансам по пользователю? - PullRequest
0 голосов
/ 24 апреля 2019

Допустим, у меня есть такой фрейм данных, где есть два пользователя и некоторые действия на веб-сайте, которые уже сгруппированы по сеансам.

библиотека (dplyr)

df <- tibble(user = c("A", "A", "A", "A", "A", "B", "B", "B", "B", "B"),
             activity = c("new", "same", "same", "new", "same", "new", "new", "same", "same", "new"))

Однако я хочу нумеровать сеансы пользователя так, чтобы они отмечались следующим образом.

df_marked <- tibble(user = c("A", "A", "A", "A", "A", "B", "B", "B", "B", "B"),
         activity = c("new", "same", "same", "new", "same", "new", "new", "same", "same", "new"),
         session = c(1, 1, 1, 2, 2, 1, 2, 2, 2, 3))

Я уверен, что это просто, но я не знаю соответствующей функции в R. Спасибо!

1 Ответ

1 голос
/ 24 апреля 2019

Вы можете использовать dplyr для этого:

library(dplyr)
df %>%
  group_by(user) %>%
  mutate(session = cumsum(ifelse(activity == "new", 1, 0)))
# A tibble: 10 x 3
# Groups:   user [2]
   user  activity session
   <chr> <chr>      <dbl>
 1 A     new            1
 2 A     same           1
 3 A     same           1
 4 A     new            2
 5 A     same           2
 6 B     new            1
 7 B     new            2
 8 B     same           2
 9 B     same           2
10 B     new            3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...