Как получить разницу от одной недели к другой на основе метки времени - PullRequest
0 голосов
/ 12 мая 2018

Я пытаюсь проверить, совершалась ли покупка покупателями неделя за неделей, создав новый столбец, в котором говорится, что покупка произошла на следующей неделе.

Исходные данные

id         timestamp           week_no   
b9968     2016-08-17 09:38:33     33
b9968     2016-08-18 17:33:23     33
b9968     2016-08-19 18:25:20     33
b9968     2016-08-23 17:46:44     34
4983f     2016-08-12 12:01:23     32
4983f     2016-08-13 17:30:47     32

Окончательныйданные

id         timestamp           week_no  diff1    
b9968     2016-08-17 09:38:33     34     1        
4983f     2016-08-13 17:30:47     32     0

1 Ответ

0 голосов
/ 12 мая 2018

Один из вариантов - использовать для этого dplyr.

Ваша ожидаемая выходная таблица немного не совпадает, поскольку первая временная метка не соответствует week_no.

library(dplyr)
df %>% 
  group_by(id) %>% 
  mutate(diff1 = week_no - lag(week_no)) %>% 
  filter(timestamp == max(timestamp))

# A tibble: 2 x 4
# Groups:   id [2]
  id    timestamp           week_no diff1
  <chr> <dttm>                <int> <int>
1 b9968 2016-08-23 17:46:44      34     1
2 4983f 2016-08-13 17:30:47      32     0

data:

df <- structure(list(id = c("b9968", "b9968", "b9968", "b9968", "4983f", 
                      "4983f"), 
               timestamp = structure(c(1471426713, 1471541603, 1471631120, 
                                       1471974404, 1471003283, 1471109447), 
                                     tzone = "UTC", class = c("POSIXct","POSIXt")), 
               week_no = c(33L, 33L, 33L, 34L, 32L, 32L)), 
          .Names = c("id", "timestamp", "week_no"), 
          row.names = c(NA, -6L), 
          class = "data.frame")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...