Накопительное n_distinct с условием для группы - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь создать столбец, содержащий совокупное количество отдельных URL-адресов группы, которые были посещены как минимум дважды.Как мне это сделать?

Мой фрейм данных выглядит примерно так:

ID Link                 RevisitedPages
1  example.org          0
1  example.org/whatever 0
1  example.org/blank    0
1  example.org/whatever 1
1  example.org/whatever 1
1  example.org/blank    2

1 Ответ

0 голосов
/ 29 января 2019

Мы можем использовать следующее:

df %>% group_by(ID, Link) %>% 
  mutate(RevisitedPages = 1 * (row_number() == 2)) %>%
  group_by(ID) %>% mutate(RevisitedPages = cumsum(RevisitedPages))

# A tibble: 6 x 3
# Groups:   ID [1]
#      ID Link                 RevisitedPages
#   <int> <fct>                         <dbl>
# 1     1 example.org                       0
# 2     1 example.org/whatever              0
# 3     1 example.org/blank                 0
# 4     1 example.org/whatever              1
# 5     1 example.org/whatever              1
# 6     1 example.org/blank                 2

Таким образом, мы сначала смотрим на каждую пару (ID, ссылка) и помещаем 1 во второе посещение, если оно существует.Затем при группировке по идентификатору мы используем cumsum.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...