Usando dplyr :: mutate entre dos marcos de datos para crear una columna basada en el rango de fechas

En este momento tengo dos marcos de datos. Uno contiene más de 11 millones de filas de una fecha de inicio, fecha de finalización y otras variables. El segundo marco de datos contiene valores diarios para días de grados de calentamiento (básicamente una medida de temperatura).

set.seed(1)    
library(lubridate)
date.range <- ymd(paste(2008,3,1:31,sep="-"))
daily <- data.frame(date=date.range,value=runif(31,min=0,max=45))
intervals <- data.frame(start=daily$date[1:5],end=daily$date[c(6,9,15,24,31)])

En realidad, mi marco de datos diario tiene todos los días durante 9 años y mi marco de datos de intervalos tiene entradas que abarcan fechas arbitrarias en este período de tiempo. Lo que quería hacer era agregar una columna a miintervals marco de datos llamadonhdd que sumaron los valores en diario correspondientes a ese intervalo de tiempo (fin exclusivo).

Por ejemplo, en este caso, la primera entrada de esta nueva columna sería

sum(daily$value[1:5])

y el segundo sería

sum(daily$value[2:8]) and so on.

Intenté usar el siguiente código

intervals <- mutate(intervals,nhdd=sum(filter(daily,date>=start&date<end)$value))

Esto no funciona y creo que podría tener algo que ver con no hacer referencia a las columnas correctamente, pero no estoy seguro de dónde ir.

Realmente me gustaría usardplyr para resolver esto y no un ciclo porque 11 millones de filas tardarán lo suficiente usando dplyr. Traté de usar más delubridate pero dplyr no parece admitir la clase Period.

Editar: en realidad estoy usando fechas deas.Date ahora en lugar delubridatepero la pregunta básica de cómo referirse a un marco de datos diferente desde dentromutate sigue en pie

Respuestas a la pregunta(0)

Su respuesta a la pregunta