Соответствие интервалов между датами в другом фрейме данных - PullRequest
0 голосов
/ 03 марта 2019

Я суммирую некоторые данные для построения в R. Я хотел бы показать данные с 7-дневным интервалом с осью X, являющейся началом недели.

выборка сводных данных:

structure(list(Date = structure(c(17843, 17843, 17844, 17846, 
                              17846, 17847, 17847, 17847, 17847, 17848, 17848, 17871, 17871, 
                              17871, 17871, 17872, 17872, 17873, 17873, 17873, 17873, 17873, 
                              17944, 17945, 17945, 17945, 17945, 17945, 17945, 17945, 17945, 
                              17945, 17945), class = "Date"), Source = df <- structure(c(1L, 1L, 
                                                                                   2L, 1L, 4L, 1L, 3L, 2L, 2L, 1L, 2L, 1L, 1L, 2L, 2L, 1L, 2L, 1L, 
                                                                                   1L, 1L, 1L, 2L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("direct", 
                                                                                                                                                           "google organic", "other organic search", "PR_referral"), class = "factor"), 
           Revenue = c(1897, 999, 2077.23, 1023.73, 1048, 1897, 949, 
                       949, 999, 849.15, 2077.23, 799.2, 819.18, 865.13, 819.18, 
                       1517.6, 898.2, 2446, 239.2, 867.13, 1517.6, 869.13, 799.2, 
                       853.1, 799.2, 799.2, 799.2, 799.2, 799.2, 799.2, 799.2, 1652.3, 
                       1083.25)), row.names = c(NA, -33L), class = "data.frame")

Используя seq и даты min и max в пределах df$Date Я создал фрейм данных с 7-дневными интервалами:

date_interval <- structure(list(week_beginning = structure(c(17827, 17834, 17841, 
                                                         17848, 17855, 17862, 17869, 17876, 17883, 17890, 17897, 17904, 
                                                         17911, 17918, 17925, 17932, 17939, 17946, 17953), class = "Date"), 
                            week_ending = structure(c(17833, 17840, 17847, 17854, 17861, 
                                                      17868, 17875, 17882, 17889, 17896, 17903, 17910, 17917, 17924, 
                                                      17931, 17938, 17945, 17952, NA), class = "Date")), class = c("tbl_df", 
                                                                                                                   "tbl", "data.frame"), row.names = c(NA, -19L))

Что я 'Я пытаюсь достичь, чтобы добавить столбец к df, который является началом недели, на который ссылается фрейм данных date_interval, для каждого наблюдения df$Date.

Я думаю, что это может включать использованиеwhich но не могу заставить это работать, нерабочий пример:

converters %>%
  mutate(test = which(Date >= date_interval$week_beginning & Date <= date_interval$week_ending))

1 Ответ

0 голосов
/ 03 марта 2019

Как я понимаю, вы хотите создать столбец с датой первого дня недели, указанной в столбце Date.Если это так, вы можете просто использовать функцию lubridate::floor_date(), т.е.

converters %>%
  mutate(week_beginning = lubridate::floor_date(Date, unit = 'weeks'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...