Создание столбца посещения на основе идентификатора сайта и даты - PullRequest
1 голос
/ 29 апреля 2020

У меня есть набор данных с уникальными сайтами, которые посещаются несколько раз каждый. У меня есть столбец идентификатора сайта и столбец даты. Я хочу создать столбец посещений для каждого уникального идентификатора сайта, который присваивает 1 для первой даты, 2 для второй и т. Д. c ... при каждом посещении сайта. Вот как выглядят мои входные данные:

 df<- data.frame(id = c("A, "A, "A, "B", "B", "B", "C"),
         date = c("05-01-2012", "05-12-2012", "05-20-2012", "05-01-2012", "05-01-2012", 
                  "05-11- 2012", "05-07-2012"))

    id date
    A  05-01-2012
    A  05-12-2012
    A  05-20-2012
    B  05-01-2012
    B  05-01-2012
    B  05-11-2012
    C  05-07-2012

Вот что я хочу сгенерировать:

    id date       visit
    A  05-01-2012 1
    A  05-12-2012 2
    A  05-20-2012 3
    B  05-01-2012 1
    B  05-01-2012 1
    B  05-11-2012 2
    C  05-07-2012 1

Я пробовал df_%>% group_by(id) %>%summarise(visit=(setDT(df)[, visit := .GRP, by = date])), но для каждого присваивается уникальное значение посещения дата, но не в пределах идентификатора, поэтому значения моих посещений просто продолжают расти, а не перезагружаются на 1 для каждого нового идентификатора.

Спасибо за помощь!

1 Ответ

0 голосов
/ 29 апреля 2020

Мы можем использовать match для создания столбца, и вместо summarise это будет mutate. summarise ожидает, что выходные данные будут возвращать по одной строке для каждой группы

library(dplyr)
df %>%
   group_by(id) %>%
   mutate(visit = match(date, unique(date)))
# A tibble: 7 x 3
# Groups:   id [3]
#  id    date       visit
#  <fct> <fct>      <int>
#1 A     05-01-2012     1
#2 A     05-12-2012     2
#3 A     05-20-2012     3
#4 B     05-01-2012     1
#5 B     05-01-2012     1
#6 B     05-11-2012     2
#7 C     05-07-2012     1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...