J'ai une trame de données contenant deux colonnes: une variable de regroupement et une période d'intervalle sur laquelle la variable de regroupement est conservée. J'ai une autre trame de données avec une colonne de date et une colonne de valeur. Comment puis-je joindre ces deux tables un peu efficacement avec les fonctions dplyr + tidyverse?Comment effectuer une jointure en fonction des intervalles avec dplyr?
library(dplyr)
library(lubridate)
ty <- data_frame(date = mdy(paste(1, 1 + seq(20), 2017, sep = "/")),
y = c(rnorm(7), rnorm(7, mean = 2), rnorm(6, mean = -1)))
gy <- data_frame(period = interval(mdy(c("01/01/2017", "01/08/2017", "01/15/2017")),
mdy(c("01/07/2017", "01/14/2017", "01/20/2017"))),
batch = c(1, 2, 3))
Je veux construire la table qui équivaut à:
ty %>% mutate(batch = c(rep(1, 7), rep(2, 7), rep(3, 6)))
Idéalement, cela devrait fonctionner assez rapidement sur des ensembles de données jusqu'à 1.000.000 lignes. Mieux encore si cela fonctionne sur 100 000 000 :).
cela ne répond pas à votre question ('dplyr'), mais comme un commentaire - vous devriez vérifier [roulement rejoint dans 'data.table'] (https://stackoverflow.com/questions/12030932/rolling-joins-data-table-in-r) – C8H10N4O2