Mit dplyr :: zwischen zwei Datenrahmen mutieren, um eine Spalte basierend auf dem Datumsbereich zu erstellen

Right jetzt habe ich zwei Datenrahmen. Eine enthält über 11 Millionen Zeilen mit einem Startdatum, einem Enddatum und anderen Variablen. Der zweite Datenrahmen enthält Tageswerte für Heizgradtage (im Grunde genommen ein Temperaturmaß).

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)])

In Wirklichkeit hat mein täglicher Datenrahmen 9 Jahre lang jeden Tag und mein Intervalldatenrahmen enthält Einträge, die sich über beliebige Daten in diesem Zeitraum erstrecken. Ich wollte nur eine Spalte zu meinem @ hinzufügintervals dataframe mit dem Namennhdd, die sich über die täglichen Werte summieren, die diesem Zeitintervall entsprechen (Ende exklusiv).

In diesem Fall wäre zum Beispiel der erste Eintrag dieser neuen Spalte

sum(daily$value[1:5])

und der zweite wäre

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

Ich habe versucht, den folgenden Code zu verwenden

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

Dies funktioniert nicht und ich denke, es könnte etwas damit zu tun haben, dass die Spalten nicht richtig referenziert werden, aber ich bin mir nicht sicher, wohin ich gehen soll.

Ich würde wirklich gerne @ verwenddplyr, um dies zu lösen, und keine Schleife, da 11 Millionen Zeilen mit dplyr lange genug dauern. Ich habe versucht, mehr von @ zu verwendlubridate aber dplyr scheint die Periodenklasse nicht zu unterstützen.

Bearbeiten: Ich verwende aktuell Daten vonas.Date jetzt stattlubridateaber die grundlegende Frage, wie auf einen anderen Datenrahmen innerhalb von @ verwiesen werden kamutate noch steh

Antworten auf die Frage(2)

Ihre Antwort auf die Frage