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 stattlubridate
aber die grundlegende Frage, wie auf einen anderen Datenrahmen innerhalb von @ verwiesen werden kamutate
noch steh